2014-08-28 46 views
3

如何讓我的CI構建停止測量我們沒有在解決方案中的項目中編寫的代碼(程序集)的覆蓋率?如何讓TFS構建不測量第三方程序集的覆蓋範圍

我們爲我們的CI構建的TFS構建定義中的解決方案打開了代碼覆蓋範圍。當我們在Visual Studio中本地運行代碼覆蓋率時,我們正確地獲得了的覆蓋率報告,只是解決方案中的程序集。但是,當我們簽入並且CI構建運行時,代碼覆蓋率報告涵蓋項目引用的其他第三方程序集(本地和CI構建中)。

由於第三方程序集有更多的代碼塊,所以它顯着地歪曲了在CI構建上測量的代碼覆蓋率,然後我們的解決方案就做到了。 程序集不是.net框架程序集,而是從NuGet程序包中拉入的其他程序集。

+0

要清楚:我知道[ExcludeFromCodeCoverage]並將其用於我們的單元測試課程。這些不是我關心的集會。他們沒有做出貢獻。關注第三方程序集(我不能添加屬性)。 – 2014-08-28 14:26:56

回答

4

如果您使用運行設置文件,則可以從代碼覆蓋率中排除某些文件。

文件的內部看起來就像這樣

<ModulePaths> 
    <Include> 
    <ModulePath>.*\.dll$</ModulePath> 
    </Include> 
    <Exclude> 
     <ModulePath>.*CPPUnitTestFramework.*</ModulePath> 
     <ModulePath>.*test.*</ModulePath> 
     <ModulePath>.*tests.*</ModulePath> 
    </Exclude> 
</ModulePaths> 

以上設置將排除在覆蓋所有測試dll的,你可以DLL名稱片段只是添加到排除節點忽略來自代碼的DLL覆蓋。

所以Some3rdParty.dll將被排除

<ModulePath>.*Some3rdParty.*</ModulePath> 

更多細節和runsettings文件的實際全部內容可以在http://msdn.microsoft.com/en-gb/library/jj635153.aspx

找到或更好的解釋http://blogs.msdn.com/b/sudhakan/archive/2012/05/11/customizing-code-coverage-in-visual-studio-11.aspx

+0

我有一個可用於VS Gallery的runsettings文件的模板項目,請參閱http://visualstudiogallery.msdn.microsoft.com/704ebd18-7d60-4341-9224-532f73229c74 VS 2013,http://visualstudiogallery.msdn。 microsoft.com/601bd207-5889-4935-b101-3ebe1f25aafa VS 2012. – 2014-08-28 18:00:17

+0

.runsettings做到了。同樣從包含它們的第三方nuget包的輸出文件夾中刪除.pdbs。我仍然不明白爲什麼有些程序集沒有包​​含.pdbs。文檔只說明帶有pdbs的解決方案組件和組件。但是,runsettings可以使構建代理的行爲與本地行爲相同。謝謝! – 2014-09-09 17:52:57

+0

這是一個謊言; :-)我已經有構建dll包括在覆蓋面之前,我不得不從源刪除生成的dll和重新添加他們從生成服務器在2012年,以阻止他們被列入! – 2014-09-09 19:15:50

相關問題