2010-03-10 96 views

回答

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

的主要问题是,该MSTest的生成代码覆盖率结果文件是二进制格式。但是,假设事情并没有在VS2010的变化太大了,你应该能够使用此工具将其转换成XML文件:

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

注意:你可能需要重新编译反对VS2010版本的'Microsoft.VisualStudio.Coverage.Analysis.dll。

然后,您可以使用您的首选解析XML文件的方法,对每个测量装配进行数学计算以计算总覆盖率。你感兴趣的(至少VS2008)的XPath是:

/CoverageDSPriv/Module/LinesCovered 
/CoverageDSPriv/Module/LinesNotCovered 

如果你想要做纯粹的MSBuild这最后一步,那么“XmlRead”和包含的MSBuild社区任务中的数学“的任务库应该足够了:

http://msbuildtasks.tigris.org/

一旦你有一个MSBuild属性的总体比例,你那么只需使用条件的任务,以打破建立,如果这个数字比所需的阈值。

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

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