코드 메트릭 계산 [닫기]


87

프로젝트의 코드 메트릭 (예 : 코드 라인 수, 순환 복잡성, 결합, 응집력)을 계산하고 시간이 지남에 따라 추세를 보여주는 그래프를 생성하는 도구가 있습니까?


언어에 따라 어떤 언어를 사용하고 있습니까?
Valentin Rocher

답변:


67

내 최신 프로젝트에서 SourceMonitor를 사용 했습니다 . 코드 메트릭 분석을위한 멋진 무료 도구입니다.
다음은 SourceMonitor 공식 사이트에서 발췌 한 것입니다.

  • 소스 파일을 통한 빠른 단일 패스로 메트릭을 수집합니다.
  • C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) 또는 HTML로 작성된 소스 코드에 대한 메트릭을 측정합니다.
  • C ++, C, C #, VB.NET, Java 및 Delphi에 대한 메서드 및 함수 수준 메트릭을 포함합니다.
  • 소프트웨어 개발 프로젝트 중 비교를 위해 체크 포인트에 메트릭을 저장합니다.
  • 표와 차트에 메트릭을 표시하고 인쇄합니다.
  • 표준 Windows GUI 내에서 또는 XML 명령 파일을 사용하여 스크립트 내에서 작동합니다.
  • 다른 도구를 사용한 추가 처리를 위해 메트릭을 XML 또는 CSV (쉼표로 구분 된 값) 파일로 내 보냅니다.

단순히 최고의 도구 인 NDepend 외에 .NET의 경우 vil 을 추천 할 수 있습니다 .

다음 도구는 추세 분석을 수행 할 수 있습니다.


SourceMonitor는 Windows 전용 도구 인 것 같습니다. 다른 운영 체제 (Linux, BSD, Mac)에도 비슷한 것이 있습니까?
Mnementh

Mnementh, 저는 Windows 개발자입니다. Wine 에뮬레이터에서 SourceMonitor를 실행할 수 있습니까?
aku

2
이제 C ++, CppDepend에 대한 NDepend 형 도구가
거위

SourceMonitor는 비 상업용입니다.
Scott 混合 理论

2
@Kevin 混合 理论 라이센스를주의 깊게 읽으십시오. 판매 할 수없는 모든 환경에서 사용할 수 있습니다. "그건 당신이 (다른 상업적 또는) 자신의 소프트웨어 개발 노력의 일환으로이 실행 파일을 사용할 수 있지만, 당신은 그것을 판매 할 수 없습니다 ...입니다"
나탈리 아담스

12

Sonar 는 특히 Java 프로젝트의 경우 반드시 고려해야 할 도구입니다. 그러나 PHP 또는 C / C ++, Flex 및 Cobol 코드도 처리합니다.

다음은 프로젝트에 대한 몇 가지 지표를 보여주는 스크린 샷입니다.

대체 텍스트 http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

http://nemo.sonarsource.org 의 데모 사이트를 사용하여 도구를 사용해 볼 수 있습니다.


분명히 SO 나 링크를 수정하지 않습니다 - 링크는 다음과 같아야합니다 nemo.sonarsource.org
나탈리 아담스


8

나는 또한 내 IDE에 대한 코드 메트릭 도구 / 플러그인을 찾고 있었지만 내가 아는 한 (일식의 경우) 지정된 기간 동안의 복잡성 그래프도 표시하지 않습니다. 그러나 이클립스 메트릭 플러그인을 찾았으며 다음을 처리 할 수 ​​있습니다.

  • McCabe의 순환 복잡성
  • Efferent 커플 링
  • 방법의 응집력 부족
  • 메서드의 코드 줄
  • 필드 수
  • 레벨 수
  • 범위 내 지역 주민 수
  • 매개 변수 수
  • 명세서 수
  • 클래스 당 가중치 적용 방법

그리고 그것을 사용하는 동안 당신이 찾고있는 그래프 옵션도 놓치지 않았습니다.
시간이 지남에 따라 그래프를 처리 할 수있는 플러그인 / 도구를 찾지 못한 경우 가장 적합하고 필요한 모든 정보를 제공하는 도구를 찾아야합니다. 주어진 정보가 프로젝트의 현재 빌드에만 해당되는 경우에도 마찬가지입니다.

참고로 이클립스 메트릭 플러그인을 사용하면 데이터를 외부 파일내보낼 수 있으므로 (링크는 예제로 이동) 소스 제어 도구를 사용하고 그래야만하는 경우 언제든지 특정 데이터를 내보낼 수 있습니다. 소스 코드와 함께 파일을 빌드하고 저장하면 시간을 거슬러 올라가 차이점을 확인할 수있는 (기본) 방법이 있습니다.


4

당신이 측정하는 것은 당신이 얻는 것임을 명심하십시오. loc은 생산성이나 효율성에 대해 아무 말도하지 않습니다.

프로그래머를 코드 줄로 평가하면 .. 코드 줄을 얻을 수 있습니다. 다른 측정 항목에 대해서도 동일한 주장이 적용됩니다.

otoh .. http://www.crap4j.org/ 는 매우 보수적이고 유용한 측정 항목입니다. 적용 범위와 관련하여 복잡성을 설정합니다.


2
댓글 줄로 프로그래머를 평가하면 댓글 줄이 표시됩니다.
EML


3

NDepend 도구와 관련하여 코드 줄 수에서 메서드 순위 (인기), 순환 복잡성, 메서드 응집력 부족, 커버리지 백분율 (NCover 또는 VSTS에서 추출), 상속 깊이에 이르기까지 82 가지 코드 메트릭이 제공됩니다. .

NDepend는 규칙 시스템을 사용하여 문제를 찾고 흥미로운 코드 메트릭 인 기술적 부채 를 추정 할 수 있습니다 (문제를 해결하기위한 개발 노력의 양 문제를 수정하지 않은 상태로 유지하기위한 연간 개발 시간의 양).

이러한 모든 메트릭은 여기 에 자세히 설명되어 있습니다 .


2

.NET 공간에있는 경우 Developer Express의 CodeRush 는 LOC, Cyclomatic Complexity 및 (더욱 탁월한 IMHO) 코드의 유지 관리 복잡성 분석을 실시간으로 제공합니다.

(유지 보수 복잡성 링크에 대해 죄송합니다. Google 캐시로 이동합니다. 원본은 오프라인 ATM 인 것 같습니다.)


2

Atlassian FishEye는 작업을위한 또 다른 훌륭한 도구입니다. 소스 제어 시스템 (현재 CVS, SVN 및 Perforce 지원)과 통합되고 이러한 방식으로 모든 파일을 분석합니다. 분석은 다소 기본적이며 제품 자체는 상업용 (하지만 매우 합리적인 가격, IMO)입니다.

동료 코드 검토를 용이하게하는 Crucible이라는 추가 기능을 얻을 수도 있습니다.


2

Visual Studio .NET (최소한 C # 및 VB.NET)의 경우 무료 StudioTools 가 메트릭에 매우 유용하다고 생각합니다. 또한 ReSharper 와 같은 상용 도구에서 볼 수있는 여러 기능을 추가합니다 .


2

코드 분석기 는 이러한 종류의 메트릭을 생성하는 간단한 도구입니다.

대체 텍스트
(출처 : teel.ws )


3
GUI가 멋져 보이지만 생성되는 메트릭은 매우 쓸모 없어 보입니다. 예를 들어 "파일 당 공백 줄"?
kizzx2 2010




0

PHP 전면에서, 예를 들어 phpUnderControl 에는 phpUnit을 통한 메트릭이 포함되어 있다고 생각합니다 (내가 착각하지 않은 경우).

메트릭은 종종 결함이 있음을 명심하십시오. 예를 들어, 사소한 문제를 해결하는 코더는 복잡한 문제를 해결하는 코더보다 더 많은 코드를 생성하고 그래프에서 더보기 좋게 보입니다.


0

추세 분석을하고 있다면 SLOC를 넘어서 측정해야 할 것이 정말 의미가 있습니까?

세미콜론을 추적하고 반환 된 줄 수를 계산하기 위해 grep을 수행하더라도 SLOC 측정 기술의 일관성이 필요합니다. 이러한 방식으로 오늘의 측정 값을 지난 달의 측정 값과 의미있는 방식으로 비교할 수 있습니다.

McCabe Cyclometric Complexity의 추세가 무엇을 줄지 정말 모르겠습니다. CC는 개발자에게 피드백을 제공하기 위해 품질 스냅 샷에 더 많이 사용되어야한다고 생각합니다.

편집 : 오. 유용 할 수있는 몇 가지 다른 측정을 생각했습니다. SLOC 및 테스트 범위의 백분율로 표시된 설명. 어느 쪽도 당신이 놓치고 싶지 않습니다. 이들 중 하나를 다시 장착하는 것은 "순간의 열기 속에서"하는 것만 큼 신이 아닙니다!

HTH.

건배,

Rob


0

Scitools의 Understand 에는 많은 코드 메트릭을 생성 할 수있는 기능이 있습니다. 나는 코드 메트릭스 기능에 대한 경험이 많지 않지만 일반적으로 정적 분석 기능이 훌륭했고 가격이 매우 합리적이었습니다. 지원은 훌륭했습니다.



0

Java의 경우 60 개 이상의 소스 코드 메트릭을 계산하고 시간에 따른 모든 변경 사항을 추적하며 소스 코드의 유지 관리 가능성에 대한 전체 등급을 제공하는 QualityGate 도구를 사용해 볼 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.