将代码覆盖链接到版本控制

时间:2011-02-04 15:45:00

标签: php git testing version-control code-coverage

在我提交更改之前,我想确保所有内容都已经过自动或手动测试,但是有很多遗留代码没有自动化测试,不会受到我的更改的影响。

是否有一个工具可以使用代码覆盖率报告交叉引用版本控制工具中的差异,并确保已经更改了所有已更改的内容?

我意识到,通过代码覆盖,这可能会给人一种虚假的安全感,而且就这样,甚至更多,但我认为值得尝试。我使用git和PHP - 我使用了XCache的代码coverager接口来浏览我运行的内容,它很有用,但是如果某些内容可以在git commit或push time自动运行,那就太好了。

2 个答案:

答案 0 :(得分:3)

您可以设置continuous integration构建服务器(有很多excellent, free build servers)。其中一个构建步骤是运行代码覆盖。您可以将其设置为忽略遗留代码,并仅针对非遗留代码计算覆盖率。然后你设置它以使构建失败如果覆盖< XX%。如果覆盖率%从之前的版本减少,甚至会失败。

答案 1 :(得分:3)

对于 git 差异,有一个名为diff-cover的工具,可以检查覆盖范围。它需要Cobertura XML覆盖率报告并与git diff的输出进行比较。然后它报告差异中的行的覆盖信息。

给定适当的覆盖xml文件,您可以使用此命令检查与master分支相比的更改范围:

$ diff-cover coverage.xml

与CI服务器集成也非常简单,只要它可以为您提供需要进行比较的提交,例如Jenkins中的$GIT_PREVIOUS_COMMIT