2013-08-20 76 views
2

我們有一個使用C#,C++/Cli和一些本地C++代碼的項目。我們使用TeamCity進行構建和測試。TeamCity C++代碼覆蓋範圍

我們使用vstest.console(VS2012測試運行器)運行測試。

對於託管代碼,dotCover(已集成到TeamCity中)用於代碼覆蓋。但是,它不適用於本機C++代碼(這是可以預料的)。

如何獲取代碼覆蓋率結果我們的單元測試本地C++部件到TeamCity中?理想情況下,解決方案將是免費的。

回答

7

我們使用Bullseye Coverage進行C++代碼覆蓋。然後我們使用提供的covxml工具將二進制覆蓋率文件轉換爲XML文件,然後我們讀出一系列用於函數和條件覆蓋率的有用屬性(例如fn_total,fn_cov,cd_total,cd_cov),並通過statistics service messages使用predefined coverage keys

這是一個設置的工作,但我認爲TeamCity仍然不支持任何C++覆蓋工具,因此我們的解決方案對於我們多年後仍然運行良好。

編輯:我已經將我們內部工具的XML parsing code上傳到Gist。

+0

如果你能分享你的xml解析腳本,那將是非常棒的:) – tauran

+0

當然,這並不是什麼祕密。我把它上傳到了主題上,看到上面的帖子。我不認爲我們正在使用最新的Bullseye(但絕對比代碼中的註釋更新),所以YMMV,但如果我正確記得這個文件格式是由作者發佈的,所以它不應該被打破。 –

+0

以下是Bullseye網站上的文檔:http://www.bullseye.com/help/ref-covxml.html –