프로젝트의 코드 메트릭 (예 : 코드 라인 수, 순환 복잡성, 결합, 응집력)을 계산하고 시간이 지남에 따라 추세를 보여주는 그래프를 생성하는 도구가 있습니까?
답변:
내 최신 프로젝트에서 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 을 추천 할 수 있습니다 .
다음 도구는 추세 분석을 수행 할 수 있습니다.
Sonar 는 특히 Java 프로젝트의 경우 반드시 고려해야 할 도구입니다. 그러나 PHP 또는 C / C ++, Flex 및 Cobol 코드도 처리합니다.
다음은 프로젝트에 대한 몇 가지 지표를 보여주는 스크린 샷입니다.
대체 텍스트 http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
http://nemo.sonarsource.org 의 데모 사이트를 사용하여 도구를 사용해 볼 수 있습니다.
나는 또한 내 IDE에 대한 코드 메트릭 도구 / 플러그인을 찾고 있었지만 내가 아는 한 (일식의 경우) 지정된 기간 동안의 복잡성 그래프도 표시하지 않습니다. 그러나 이클립스 메트릭 플러그인을 찾았으며 다음을 처리 할 수 있습니다.
그리고 그것을 사용하는 동안 당신이 찾고있는 그래프 옵션도 놓치지 않았습니다.
시간이 지남에 따라 그래프를 처리 할 수있는 플러그인 / 도구를 찾지 못한 경우 가장 적합하고 필요한 모든 정보를 제공하는 도구를 찾아야합니다. 주어진 정보가 프로젝트의 현재 빌드에만 해당되는 경우에도 마찬가지입니다.
참고로 이클립스 메트릭 플러그인을 사용하면 데이터를 외부 파일 로 내보낼 수 있으므로 (링크는 예제로 이동) 소스 제어 도구를 사용하고 그래야만하는 경우 언제든지 특정 데이터를 내보낼 수 있습니다. 소스 코드와 함께 파일을 빌드하고 저장하면 시간을 거슬러 올라가 차이점을 확인할 수있는 (기본) 방법이 있습니다.
당신이 측정하는 것은 당신이 얻는 것임을 명심하십시오. loc은 생산성이나 효율성에 대해 아무 말도하지 않습니다.
프로그래머를 코드 줄로 평가하면 .. 코드 줄을 얻을 수 있습니다. 다른 측정 항목에 대해서도 동일한 주장이 적용됩니다.
otoh .. http://www.crap4j.org/ 는 매우 보수적이고 유용한 측정 항목입니다. 적용 범위와 관련하여 복잡성을 설정합니다.
NDepend, 나는 그것을 사용하고 있으며이 목적에 가장 적합합니다. 이것을 확인하십시오 : http://www.codeproject.com/KB/dotnet/NDepend.aspx
Visual Studio .NET (최소한 C # 및 VB.NET)의 경우 무료 StudioTools 가 메트릭에 매우 유용하다고 생각합니다. 또한 ReSharper 와 같은 상용 도구에서 볼 수있는 여러 기능을 추가합니다 .
.NET을 사용하는 경우 reflector 용 코드 메트릭 플러그인 도 있습니다 .
Visual Studio 용 Code Metrics Viewer Exention 을 추천 합니다.
한 번에 솔루션을 분석하는 것은 매우 쉬우 며, 진전이 있었다면 비교도 할 수 있습니다 ;-)
PHP 전면에서, 예를 들어 phpUnderControl 에는 phpUnit을 통한 메트릭이 포함되어 있다고 생각합니다 (내가 착각하지 않은 경우).
메트릭은 종종 결함이 있음을 명심하십시오. 예를 들어, 사소한 문제를 해결하는 코더는 복잡한 문제를 해결하는 코더보다 더 많은 코드를 생성하고 그래프에서 더보기 좋게 보입니다.
추세 분석을하고 있다면 SLOC를 넘어서 측정해야 할 것이 정말 의미가 있습니까?
세미콜론을 추적하고 반환 된 줄 수를 계산하기 위해 grep을 수행하더라도 SLOC 측정 기술의 일관성이 필요합니다. 이러한 방식으로 오늘의 측정 값을 지난 달의 측정 값과 의미있는 방식으로 비교할 수 있습니다.
McCabe Cyclometric Complexity의 추세가 무엇을 줄지 정말 모르겠습니다. CC는 개발자에게 피드백을 제공하기 위해 품질 스냅 샷에 더 많이 사용되어야한다고 생각합니다.
편집 : 오. 유용 할 수있는 몇 가지 다른 측정을 생각했습니다. SLOC 및 테스트 범위의 백분율로 표시된 설명. 어느 쪽도 당신이 놓치고 싶지 않습니다. 이들 중 하나를 다시 장착하는 것은 "순간의 열기 속에서"하는 것만 큼 신이 아닙니다!
HTH.
건배,
Rob
Scitools의 Understand 에는 많은 코드 메트릭을 생성 할 수있는 기능이 있습니다. 나는 코드 메트릭스 기능에 대한 경험이 많지 않지만 일반적으로 정적 분석 기능이 훌륭했고 가격이 매우 합리적이었습니다. 지원은 훌륭했습니다.
프로젝트 코드 미터 는 SLOC, 시간 및 생산성 백분율로 코딩 진행 메트릭을 보여주는 차등 개발 이력 보고서 (Excel 형식)를 제공합니다 (시간 추정은 순환 복잡성 및 기타 메트릭을 기반으로 함). 그런 다음 Excel에서 원하는 그래프를 쉽게 생성 할 수 있습니다.
단계별로 설명하는이 문서를 참조하십시오. http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
Java의 경우 60 개 이상의 소스 코드 메트릭을 계산하고 시간에 따른 모든 변경 사항을 추적하며 소스 코드의 유지 관리 가능성에 대한 전체 등급을 제공하는 QualityGate 도구를 사용해 볼 수 있습니다 .