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

7

当代码覆盖率低于特定阈值时,如何使构建失败?

3个回答

2
主要问题是 MSTest 生成的代码覆盖率结果文件是二进制格式。不过,假设在 VS2010 中事情没有太多改变,您应该能够使用此实用程序将其转换为 XML 文件:

http://codeexperiment.com/file.axd?file=2008%2f9%2fCodeCoverageConverter.zip

注意:您可能需要针对“Microsoft.VisualStudio.Coverage.Analysis.dll”的VS2010版本重新编译它。
然后,您可以使用首选的解析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." />

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 

0
古老的问题,但未标记为已回答。请查看this

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接