TFS 2010 RC:如何使代码覆盖率低的构建失败?

时间:2010-03-10 14:05:07

标签: tfs tfs2010 team-build tfsbuild

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

3 个答案:

答案 0 :(得分:2)

主要问题是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社区任务库中包含的'XmlRead'和'Math'任务应该足够了:

http://msbuildtasks.tigris.org/

在MSBuild属性中获得总体比率之后,如果该数字低于所需阈值,则只需使用条件任务来破坏构建。

<Error Condition=" $(CodeCoverageRatio) &lt; $(MinCodeCoverage) "
       Text="Code Coverage is below required threshold." />

答案 1 :(得分:0)

使用构建任务很可能有一种方法(特别是如果你愿意自己动手​​)。希望有人会为您发布一些示例代码。

如果没有,我对这类任务的NDepend印象深刻。您可以使用非常不言自明的类似SQL的语法来编写有关代码的各种度量标准,并根据阈值警告或失败构建。

示例:

WARN IF Count > 0 IN SELECT METHODS WHERE CodeWasChanged AND PercentageCoverage <  95
WARN IF Count > 0 IN SELECT METHODS WHERE IsPublic AND IsInOlderBuild AND WasRemoved 

答案 2 :(得分:0)

古代问题,但未标记为已回答。看看this