当代码覆盖率低于某个阈值时,如何导致构建失败?
最佳答案
主要问题是 MSTest 生成的代码覆盖率结果文件是二进制格式。但是,假设 VS2010 中的事情没有太大变化,您应该能够使用此实用程序将其转换为 XML 文件:
http://codeexperiment.com/file.axd?file=2008%2f9%2fCodeCoverageConverter.zip
注意:您可能需要针对 VS2010 版本的“Microsoft.VisualStudio.Coverage.Analysis.dll”重新编译它。
然后,您可以使用您喜欢的解析该 XML 文件的方法,对每个检测的程序集进行数学运算以计算整体覆盖率。您感兴趣的 XPath(至少对于 VS2008)是:
/CoverageDSPriv/Module/LinesCovered
/CoverageDSPriv/Module/LinesNotCovered
如果您想在纯 MSBuild 中执行最后一步,那么 MSBuild Community Tasks 库中包含的“XmlRead”和“Math”任务就足够了:
http://msbuildtasks.tigris.org/
在 MSBuild 属性中获得总体比率后,如果该数字低于所需阈值,则只需使用条件任务来中断构建。
<Error Condition=" $(CodeCoverageRatio) < $(MinCodeCoverage) "
Text="Code Coverage is below required threshold." />
关于TFS 2010 RC : How to fail a build for low code coverage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2417433/