2014-01-29 3 views
0

나는 this site claiming thatCyclomatic Complexity = (2 + ifs + loops +cases - return)을 발견했으며, 기본적으로 동일한 조건문 +1의 수로 순환 복잡도를 계산할 수 있음을 알게되었습니다.단순한 순환 복잡도 계산

위의 내용은 스위치의 각 사례에 대해 +1을 순환 복잡성에 추가한다고 나와 있습니다. 각각의 경우에 return 문이 있으면 어떻게됩니까?

예를 들어 아래 코드의 CC는 여전히 4 또는 2입니까?

function(someVal) { 
switch (someVal) { 
    case 1: return something; 
    case 2: return something; 
    case 3: return something; 
     doSomething(); 
     break; 
    default: 
     doSomethingElse(); 
     break; 
} 

}

답변

2

된 Cyclomatic 복잡성은 프로그램을 통해 선형 독립적 인 경로의 수이다. 다시 말해서 은 엔트리 포인트에서 종료점까지 몇 개의 다른 경로가 있는지를 나타냅니다. 이것은 기본 프로그램이 얼마나 복잡한 지에 대한 지표 인 이며 전체를 얻는 데 필요한 테스트 케이스의 수에 대한 하한값을 제공합니다. 모듈의 경로 적용 범위 (여기에서 전체 경로 범위는 모든 코드 행을 적어도 한 번).

그래프 이론을 기반으로 한 프로그램을 통한 경로 수를 계산하는 데는 여러 가지 방법이 있습니다. 이 중 많은 수가 을 사용중인 것과 같은 간단한 계산 규칙에 요약되어 있습니다.

이제 특정 질문에 답변하십시오. 프로그램의 순환 적 복잡도는 얼마입니까?

enter image description here

얼마나 많은 경로를이 차트를 통해이 있습니다 : 프로그램 구조 차트를 고려? 가장자리 번호를 사용하면 다음 경로가 있습니다.

1, 2 
    1, 3, 4 
    1, 3, 5, 6, 7 
    1, 3, 5, 8, 9 

이 프로그램에는 4 개의 선형 경로가 있습니다.

edges - nodes + 2 = 9 - 7 + 2 = 4 
Number of enclosed spaces in the structure chart plus 1 (3 + 1 = 4) 

된 Cyclomatic 복잡성의 원래 정의는 : 복잡성을 구조화 프로그램 (구조 차트없이 횡단 선)을 가정하고 동일한 결과를 마련하는 다른 방법이있다 4.

인 V (G) = E - N + 2P이다. 여기서 E = 모서리, N = 노드 및 P = 모듈 수 (그래프). 부터 우리는 하나의 모듈에 순환 적으로 복잡성을 적용합니다. P는 거의 항상 1입니다.