仅在新代码上测量代码覆盖率

我们正在寻找一种创造性的方式来测量与现有代码分开的新代码的代码覆盖率。 我们有一个大型的遗留项目,并希望开始在任何新功能上获得90%以上的覆盖率。 我们希望能够轻松查看报告,筛选出任何较旧的代码以确保新功能符合我们的目标。 很明显,该项目的整体覆盖面仍在不断增加,但需要非手动方式向我们反馈新的代码活动。 由于我们可以查看源文件的日期,因此我们可以使用静态分析。 由于Cobertura正在分析类文件,因此它们有新的日期,并且此技术不起作用。

有任何想法吗?

堆栈:

Java 1.5 JUnit Cobertura Hudson


我们有类似的情况..想要测试新代码,但不能一次测试所有旧代码。 我们所做的并不完全是你所问的,但可能会给你一个想法。

我们有一个名为linecoverage.standard的文件和一个名为branchcoverage.standard的文件,它们位于构建服务器(和本地副本)上。 他们在当前线路和分支覆盖范围内有一个数字。 如果签入的代码低于标准,则代码生成失败。 如果它符合标准,它会通过构建。 如果它高于标准,则会写入一个等于当前报道的新标准。

这意味着我们的代码覆盖率永远不会变差,并且应该慢慢上升。 如果新代码是90%,覆盖率将不断攀升。 你也可以设定一个目标,比如每周提高标准1,直到达到最终目标(90%)。 如果分散了足够的时间,不得不每周向旧代码添加一些测试并不是一个坏主意。

我们目前的覆盖率高达75%,相当不错,这是一年前的0%。


我通过将svn blame与gcov的输出结合起来,为一个大型的C ++项目做了这个工作。 如果您将这两个结果压缩在一起,您将获得每行的修订信息和覆盖率信息。 实际上,我将这些加载到数据库中进行查询(例如,显示自r1234以来由joe编写的所有未被覆盖的行)。 如果你只想要一个总数,你可以避免计算总数中的“旧”未覆盖线。


在这里查看emma.sourceforge和相关的Eclipse插件(如果您使用的是Eclipse)

我认为这个工具可以根据您的需要选择准确的测试范围。

链接地址: http://www.djcxy.com/p/47761.html

上一篇: Measure Code Coverage only on New Code

下一篇: Does functools.partial not work with multiprocessing.Pool.map?