2010-03-10 142 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