监视多语言产品中的代码指标

问题描述 投票:2回答:3

我们有一个由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服务器。我只是没有看到easy向其输出添加指标或基于时间的指标的方法。也许我缺少明显的东西。我似乎在this页上添加了自定义指标,但对我来说这有点笨拙。

理想情况下,我希望以简单的格式将指标写到文件中,并让某些内容动态生成指标。理想情况下,我想将类似以下输出的内容转换为简单的图表

建立编号|建立时间公制|值00000001 10:45 TestPassRate 9500000001 10:45 BuildTime 30000000001 10:45 C ++ BuildTime 20000000001 10:45 JavaBuildTime 5000000001 10:45 TestTime 5000000002 11:45 ......
time-series language-agnostic reporting build-process metrics
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查询替换为您的metrics,您就可以了。


0
投票

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

在我们的位置,我们使用TeamCity,但还有更多(list on wikipedia

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

您可以收获CI服务器的历史构建页面,但是它们通常不会返回很远,这就是为什么最好将数据保存在其他位置。如果您正在寻找简单的收割方法,请尝试使用Beautiful Soup进行Python处理。否则,使用Java和HTTP ClientjTidy是可行的方法。


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.