TFS 2010 RC : How to fail a build for low code coverage?

标签 tfs tfsbuild

当代码覆盖率低于某个阈值时,如何导致构建失败?

最佳答案

主要问题是 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) &lt; $(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/

相关文章:

tfs - 将 Fitnesse RESTFul XML 输出解析为 TFS 测试格式

visual-studio-2010 - 使用 TFS 时 Visual Studio 2010 卡住

.net - 构建服务器上的 Visual Studio 2017 依赖项验证项目

authentication - 更改用于 TF 命令行的登录帐户

tfsbuild - TFS 门控 checkin 问题

visual-studio-2012 - Visual Studio 2012 重定向 Microsoft.TeamFoundation.Client.dll 的绑定(bind)

mysql - 部署到 Azure 中以破折号命名的 MySql 数据库

azure - 使用 TFS 将多个项目发布到 Azure 上的不同虚拟目录

tfs - MSBuild TFS内部版本号

sql-server - 需要在 TFS 上数据库项目的每个更改的每次构建中生成 SQL 脚本文件