2016-08-09 25 views
0

코드베이스를 평가하기 위해 Mccabe 코드 복잡성을 사용하고 있지만 각 개별 함수의 코드 복잡성 점수 만 제공합니다. 전체 코드 복잡성 점수는 내 코드 기반의 모든 함수 점수 합으로 표시됩니다. 시간이 지남에 따라 코드 기반의 복잡성을 줄이려는 노력의 추세를 반영하여 정규화 된 메트릭 (라인 - 오브 - 코드를 고려함)을 제시하고자합니다. (우리가 알고 있듯이 제거/추가 기능은 복잡성 점수를 변경하지만 복잡성은 변하지 않습니다.) 표준 방법이 있습니까? 평균적인 복잡성 같은 거요?C 전체 코드베이스의 코드 복잡도 메트릭

+0

* "... 그러나 단지 제공합니다."* - * it *은 무엇입니까? 가지고있는 도구? 전체 코드를 평가할 수있는 다른 도구를 찾으십시오. –

+0

https : //people.debian.org/~ bame/pmccabe/pmccabe.1 그것은 전체 코드베이스의 수를 제공하지만 숫자를 더하는 것만으로 .... – yangjeep

답변

1

McCabe 코드 복잡도 메트릭은 전체 프로그램이 아니라 기능에 대해 을 의미합니다 (). 간단한 말로하면 : 함수가 특정 한계 (vulga : 스파게티 코드) 이상의 McCabe 번호를 가지고 있다면 몇 가지 간단한 함수로 나누어야합니다.

실제 측정 값은 가능한 경로의 수입니다. 이것은 상대적으로 하나의 함수에서 상대적으로 쉽지만, 의존적이라면 여러 함수에 대해 매우 복잡합니다. 즉,이 함수들이 서로를 호출하는 경우입니다.

독자적인 기능 (예 : 라이브러리)이 있다면 추가 할 수는 있지만 의존성이있는 경우 (예 : 본격적인 프로그램) 전체 프로그램을 통해 가능한 모든 경로를 계산해야합니다. 노드가 함수 인 경우 McCabe 번호를 포함해야하며 그렇지 않은 경우 (예 : 간단한 분기) 단일 함수처럼 1로 포함 할 수 있습니다. 그래서

:

  • 독립적 인 기능 : 모든
  • 독립적 인 기능 그들에게 추가
    • 선형 방식으로 호출 (단일 경로) : 그들에게 두 가지 방법으로 불리는 모든
    • 를 추가 (두 개의 선형 경로) : 함수의 분기와 마찬가지로 각 경로에 함수를 추가하고 두 경로를 추가하십시오.
    • n 방법 (n 선형 경로) : 함수의 분기와 마찬가지로 각 경로에 함수를 추가하고 모든 경로를 추가하십시오.
    • 종속 함수 : 위와 같지만 가능한 많은 수의 경로를 계산해야하기 때문에 빨리.

당신은 물론, 모든 것을 자동화 할 수 있습니다. 좋아, 가능한 모든 경로를 계산할 수있는 언어 구문 분석기를 작성해야하며 그 값어치가 있으면 & 돈을 쓸 가치가 있습니다. 잘 모르겠습니다.

그리고 더 큰 함수를 여러 간단한 함수로 나눠서 함수의 MacCabe 수를 줄입니다. 자, 전체 프로그램으로 어떻게 할 수 있습니까? 여러 개의 간단한 프로그램/라이브러리로 분할하십시오. 예, 그렇게되면 효과가 있다고 생각합니다.

하지만 여전히 많은 작업이 있습니다.

BTW : 나에게는 애완 동물이 아니지만 LoC의 수가 복잡성과 관련이 있다고 생각하지 않습니다. LoC는 코드 줄 수 이외에는별로 좋지 않은 척도입니다.