2

我们有一个由 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,但我正在寻找更多与语言无关的东西

所以,总结一下。我正在寻找可以随时间报告指标的东西,它易于扩展,具有基于 Web 的报告 gui,而且价格便宜。(要求不高啊!)

编辑:为了清楚起见,我们使用 CruiseControl 作为我们的 CI 服务器。我只是还没有看到一种简单的方法来将指标或基于时间的指标添加到它的输出中。也许我错过了一些明显的东西。我似乎在这个页面上添加了自定义指标,但对我来说有点笨拙。

理想情况下,我希望以简单的格式将指标写到文件中,并让某些东西动态生成指标。理想情况下,我想把下面的输出变成一个简单的图表

构建 ID | 建造时间 | 公制 | 值
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 ......
4

3 回答 3

2

如果您使用 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 查询到您的指标,您就可以开始了。

于 2009-09-25T16:06:33.660 回答
0

您可能正在寻找 CI 服务器(持续集成)。这些服务器监视源存储库(CVS、Subversion 等)并构建所有已更改的项目以及所有相关项目。

在我们这里,我们使用TeamCity,但还有更多(维基百科上的列表

[编辑] 大多数 CI 服务器在构建后显示某种报告(花了多长时间,运行了多少测试等)。您需要做的就是在构建后触发一个程序,该程序会获取此信息并将其保存在数据库中。

您可以获取 CI 服务器的历史构建页面,但它们通常不会返回很远,这就是为什么最好将数据保存在不同的位置。如果您正在寻找一些简单的收获,请尝试 Python 和Beautiful Soup。否则,Java 和HTTP 客户端加上jTidy是要走的路。

于 2009-09-22T15:44:33.213 回答
-1

rrdtool 可能会提供您正在寻找的那种历史视图。您只需要让 CI 服务器在每次运行时将构建报告转储到正确的位置,然后 rrdtool 就可以从那里获取它。

于 2009-09-25T16:12:38.533 回答