2009-09-22 4 views
1

C++과 Java로 구성된 제품이 있습니다. C++은 make를 사용하여 빌드하고 자바 프로젝트는 일부 개미 프로젝트와 일부 maven2 프로젝트로 구성됩니다.다국어 제품의 코드 통계 측정

시간이 지남에 따라 빌드 시스템에서 유용한 메트릭을 얻는 데 도움이되는 도구를 찾고 있습니다. 예 :

* Total build time 
* C++ project build time 
* Java build time 
* Number of compiler warnings 
* Number of unit tests (run/passed/failed/errors). (Tests are written in cxxTest and JUnit) 
* Acceptance test metrics (run/passed/failed/errors) 
* Total number of files 
* LOC (to keep the managers happy) 

내가 생각할 수있는 다른 측정 항목이 많지만 아이디어를 얻을 수 있습니다.

일회성 보고서에 대한 이러한 측정 항목을 얻는 것은 매우 간단합니다. 제가 정말로 필요로하는 것은 시간이 지남에 따라 이러한 지표를 계획 할 수있는 간단한 도구입니다.

우리가 시간이 지남에 따라 0으로 기울어지는 경고 수를 볼 수 있기 때문에 컴파일러 경고 일 가능성이있는 간단한 사용 사례입니다. (꽤 큰 프로젝트이기 때문에 한꺼번에 수정할 수는 없으며 빅뱅 접근 방식에 대한 시간이 없습니다.) 또한 새로운 경고가 도입 될 때이를 신속하게 발견하는 데 도움이됩니다.

이 질문 Monitoring code metrics in Java over longer time period을 본 적이 있지만 나는 요약하면, 뭔가 그래서

불가지론 좀 더 언어를 찾고 있어요. 나는 시간이 지남에 따라 메트릭스를보고, 쉽게 확장 할 수있는 것을 찾고 있는데, 웹 기반의보고 GUI를 가지고있다. (많은 허구를 묻지 않음)

편집 : 우리는 CruiseControl을 CI 서버로 사용하고 있습니다. 난 단지 쉬운 그것의 출력에 메트릭스 또는 시간 기반 통계를 추가하는 방법을 보지 못했어요. 어쩌면 나는 명백한 것을 놓치고 있을지 모른다. 사용자 정의 메트릭을 추가하는 방법에 대해서는 this 페이지로 보였습니다. 그러나 저에게는 다소 혼란 스럽습니다.

이상적으로 파일에 간단한 형식으로 메트릭을 작성하고 메트릭을 동적으로 생성하는 것이 좋습니다. 이상적으로 아래의 출력을 간단한 차트로 바꾸고 싶습니다.

 
Build Id | Build Time | Metric  | Value 
00000001 10:45 TestPassRate 95
00000001 10:45 BuildTime 300
00000001 10:45 C++BuildTime 200
00000001 10:45 JavaBuildTime 50
00000001 10:45 TestTime 50
00000002 11:45 ......

답변

1

Java CruiseControl을 사용하는 경우 원하는 메트릭을 쉽게 얻을 수 있습니다. 임의의 .xml을 과 함께 로그 파일에 포함시킨 다음보고 .jsp 페이지의 값을 참조 할 수 있습니다. 이것이 PMD 및 checkstyle 및 Javadoc 오류에 대한 추세 차트가 수행되는 방식입니다. 측정 항목에서.JSP :

<jsp:useBean id="xpathData" class="net.sourceforge.cruisecontrol.chart.XPathChartData" /> 
<% 
    xpathData.add("CheckStyle", "count(/cruisecontrol/checkstyle/file/error)"); 
    xpathData.add("PMD", "count(/cruisecontrol/pmd/file/violation)"); 
    xpathData.add("Javadoc", "count(/cruisecontrol/build//target/task[@name='javadoc']/message[@priority='warn' or @priority='error'])"); 
%> 
<cewolf:chart id="chart" title="Coding violations" type="timeseries" xaxislabel="date" yaxislabel="violations"> 
    <cewolf:data> 
     <cewolf:producer id="xpathData"> 
      <cewolf:param name="build_info" value="<%=build_info%>" /> 
     </cewolf:producer> 
    </cewolf:data> 
    <cewolf:chartpostprocessor id="xpathData" /> 
</cewolf:chart> 
<cewolf:img chartid="chart" renderer="cewolf" width="400" height="300"/> 

당신은 당신의 통계에 XPath는/w는 XPath 쿼리를 대체 metrics.jsp에이 붙여 넣을 수 있습니다 당신은 갈 수 있어요.

0

아마도 CI 서버 (연속 통합)를 찾고있을 것입니다. 이 서버는 소스 저장소 (CVS, Subversion 등)를보고 변경된 모든 프로젝트와 모든 종속 프로젝트를 빌드합니다. 우리의 장소에서

, 우리는 TeamCity 사용하지만 많이 있습니다 이상 (list on wikipedia)

[편집] 대부분의 CI 서버 (많은 테스트를 실행 어떻게 걸린 시간 등)를 빌드 후 보고서의 어떤 종류를 표시 . 이 정보를 가져 와서 데이터베이스에 저장하는 빌드 후에 프로그램을 실행하기 만하면됩니다.

CI 서버의 내역 빌드 페이지를 수집 할 수는 있지만 대개 멀리 떨어져 있지 않으므로 데이터를 다른 장소에 저장하는 것이 더 좋습니다. 수확을 위해 간단한 것을 찾고 있다면 파이썬을 Beautiful Soup으로 시도해보십시오. 그렇지 않으면 자바와 HTTP Client 더하기 jTidy 가야합니다.

+0

우리는 CruiseControl을 사용하여 CI 부분을 수행합니다. 그냥 임의의 시간 기반 메트릭을 수행하는 방법을 보지 못했습니다. 어쩌면 나는 명백한 것을 놓치고 있을지 모른다. 단일 빌드에 대한 (일부) 메트릭을 얻는 것은 괜찮지 만 지난 6 개월 동안 모든 빌드에 대한 메트릭은 어떨까요 ..... – Glen

-1

rrdtool은 당신이 찾고있는 역사적인 견해를 제공 할 수 있습니다. CI 서버가 실행될 때마다 올바른 위치에 빌드 보고서를 덤프하면 rrdtool이 빌드 보고서를 여기에서 가져올 수 있습니다.