2012-04-25 4 views
10

는, 특정 Java 클래스, 난을 참조하십시오차이는 수중 음파 탐지기에서

Complexity:  830 

Complexity /method:  8,1 

가 어떻게 그 두 지표 사이의 차이를 설명 할 수 있을까?

"복잡성"은 클래스의 복잡성입니까?

클래스의 최대 복잡도는 얼마입니까? 메소드의 복잡도는 메소드가 10보다 작아야한다는 것을 알고 있지만 클래스가 준수해야하는 최대 클래스 복잡성 수치는 무엇이 복잡하지 않다고 생각합니까?

감사합니다.

편집

나는 또한 파일 된 Cyclomatic 복잡성 규칙 위반을 확인합니다.

"라 complexité cyclomatique 드 라 CLASSE 동부 표준시 드 (28) alors 가야 르 최대 autorisé 동부 표준시 드 (10)"방법의 번호

는, 수중 음파 탐지기는 (프랑스어) 다른 복잡한 번호를 말한다 영어

:

"클래스 복잡성을 28하지만 허용되는 최대 10입니다."

왜 "클래스 순환 적 복잡성"이 "순환 적 복잡성 방법"으로 보이는 지 이해할 수 없습니다.

또한, 소기의 평균 복잡도가 8.1 밖에되지 않으므로 문제의 클래스는 평균 복잡도/메소드로 정렬 된 가장 복잡한 클래스 위에 표시되지 않습니다.

답변

6

우리의 "미터법 정의"위키 페이지 (특히 "Complexity" section)를 보면 소나에서 발견되는 메트릭의 의미에 대해 더 많이 알 수 있습니다.

  • 이 "복잡성이"자원의 전체 복잡성 (a 파일 = "파일에서 정의 된 모든 클래스의 복잡성의 합)
  • "복잡성/방법 "은 나눈"복잡성 "인 파일에있는 메소드의 수
  • ... 기타 메트릭에 대해서도 마찬가지입니다.
+1

답장을 보내 주셔서 감사합니다. 아마 그것은 나이지만 "복잡성"은 "방법의 복잡성의 합"을 의미하는 것이 분명하지는 않지만 지금은 실제로 분명해 보인다. 위키 페이지는 그것이 모든 메소드 복잡성의 합계라는 것을 나타내지 않습니다. –

+0

@ Jérôme : 공식적으로, 클래스에 대한 McCabe의 복잡성의 합계는 [여기] (https://sonarqube.sourcemeter.com/plugins/resource/491408?page=sm-help)에 설명 된대로 WMC (클래스 별 가중치 메소드)라고합니다. #복잡성). –

+0

제시된 링크는 수중 음파 탐지기가 처리하는 복잡도 메트릭 사이를 구분하지 않습니다 (예 : CoreMetrics.FILE_COMPLEXITY 및 CoreMetrics.COMPLEXITY). – XtianGIS