我们有一个由C ++和Java部件组成的产品。 C ++的东西是使用make构建的,java项目由一些ant项目和一些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)
我可能会想到很多其他指标,但你明白了。
获取一次性报告的这些指标非常简单。我真正需要的是一个简单的工具,可以让我随着时间的推移绘制这些指标。
这是一个非常有用的简单用例是编译器警告,因为我们可以看到警告的数量随着时间的推移趋于零。 (我们无法立即修复它们,因为它是一个非常大的项目,而我们只是没有时间进行大爆炸的方法)。它还可以帮助我们在引入新警告时迅速发现它们。
我已经看到了这个问题Monitoring code metrics in Java over longer time period,但我正在寻找一些与语言无关的东西
所以,总结一下。我正在寻找能够随着时间推移报告指标的内容,这些内容很容易扩展,有基于网络的报告gui,最好是便宜的。 (不要求太多了!)
编辑:为了清楚起见,我们使用CruiseControl作为我们的CI服务器。我还没有看到一种 easy 方式来为其输出添加指标或基于时间的指标。也许我错过了一些明显的东西。我似乎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 ......
答案 0 :(得分:1)
如果您正在使用Java CruiseControl,则可以轻松获得所需的指标。您可以在的日志文件中包含任意.xml,然后引用报告.jsp页面中的任何值。这正是PMD趋势图以及checkstyle和Javadoc错误的完成方式。来自metrics.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"/>
您可以将其粘贴到metrics.jsp中,将带有xpath的xpath查询替换为您的指标,您就可以了。
答案 1 :(得分:0)
您可能正在寻找CI服务器(持续集成)。这些服务器监视源存储库(CVS,Subversion,等等)并构建所有已更改的项目以及所有依赖项目。
在我们的位置,我们使用TeamCity但还有更多(list on wikipedia)
[编辑]大多数CI服务器在构建之后显示某种报告(花了多长时间,运行了多少次测试等)。您需要做的就是在构建之后触发程序,该程序将获取此信息并将其保存在数据库中。
您可以收获CI服务器的历史构建页面,但它们通常不会到达很远的地方,这就是为什么最好将数据保存在不同的地方。如果您正在寻找收获简单的东西,请尝试使用Beautiful Soup的Python。否则,Java和HTTP Client以及jTidy是可行的方法。
答案 2 :(得分:-1)
rrdtool可能会提供您正在寻找的那种历史视图。您只需要让CI服务器在每次运行时在正确的位置转储构建报告,rrdtool可以从那里获取它。