2013-03-26 73 views
4

我想用Cobertura設置我的Jenkins以跟蹤代碼覆蓋率。 不幸的是,我無法生成有效的XML。GCovr不會生成有效報告

我使用:

  • gcovr 2.5搶鮮(r2774)
  • 的Xcode 4.6.1生成版本4H512

我的項目是生成的代碼覆蓋率文件正確,但報告用gcovr創建沒有用。

我用它來生成報告的命令是:

gcovr -r /Users/Shared/Jenkins/Home/jobs/CodeCoverage/workspace 
--object-directory /Users/Shared/Jenkins/Home/Library/Developer/Xcode/DerivedData/myProject-aooceqwwovrizceerghqvhflcfty//Build/Intermediates/myProject.build/Development/myProject.build/Objects-normal/x86_64 
--exclude '.*Developer.*' 
--exclude '.*Tests.*' 
--xml 

這將創造我這樣的輸出:

<?xml version="1.0" ?> 
<!DOCTYPE coverage SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-03.dtd'> 
<coverage branch-rate="0.0" line-rate="0.0" timestamp="1364322914" version="gcovr 2.5-prerelease (r2774)"> 
<sources> 
    <source> 
     /Users/Shared/Jenkins/Home/jobs/CodeCoverage/workspace/Project/myProject/ 
    </source> 
</sources> 
<packages/> 
</coverage> 

附加信息:

如果我刪除--object -directory和-r,然後從派生數據目錄執行命令生成有效的報告。該報告可以從cobertura中讀取,但不能顯示關於源文件的任何詳細信息。

+0

其實,我辭職了使用gcovr 。我正在使用一組shell腳本來生成XML。首先我運行gcov,然後排除特殊註釋之間的某些行(我正在使用CoverStory),然後從gcov輸出的第一列生成XML。這實際上非常簡單,您還可以直接在工作區中引用源文件,以便您可以輕鬆查看jenkins上的文件覆蓋範圍。 – Sulthan 2013-03-26 18:59:17

+1

@Sulthan你可能會分享你的腳本嗎?我無法讓gcovr使用Xcode 5生成的文件,我正在尋找不同的解決方案。謝謝! – SAE 2013-11-06 22:18:32

回答

2

使用XCode時,我發現使用$WORKSPACE/build作爲構建目錄可以解決此問題。這使得Derived Data目錄不在其中,並且還將我的對象文件整齊地保存在構建目錄中。它還可以防止兩個構建互相干擾。

如果使用Xcode構建工具,請在工具的構建配置中將SYMROOT設置爲$WORKSPACE/build。如果您是從命令行構建的,請在命令行或環境中手動設置它。

然後,gcovr腳本,如:

/your/path/to/gcovr -r . --object-directory build/YourApp.build/Coverage-iphonesimulator/YourApp.build/Objects-normal/i386 --xml > build/coverage.xml 

終於在配置的Cobertura,點build/coverage.xml(你的路徑可能會略有不同,你叫什麼你的構建風格等會發生變化) ,當你在Jenkins中使用該工具時,你應該得到註釋源。

應該這樣做。我對我們的Mac Minis小農場的配置非常滿意。

+0

您的解決方案很有趣,所以我嘗試應用一些更改。當我爲CONFIGURATION_BUILD_DIR或SYMROOT設置自定義路徑時,xcodebuild會在指定文件夾內生成一些文件。這些文件只是應用程序和符號信息。對象目錄仍在派生數據下。 – Giuseppe 2013-03-27 12:43:15

+0

你使用xcode插件還是別的什麼來做你的xcode構建?如果您沒有使用xcode插件,您可以將「xcodebuild」命令的腳本添加到問題中嗎?有許多「下游」設置通常將.o文件放置在SYMROOT中描述的路徑中,但許多可以在項目中進行更改。 – gaige 2013-03-27 12:52:32

+0

xcodebuild -workspace myProject.xcworkspace -scheme myProject-Development clean build BUILD_DIR =/Users/Shared/Jenkins/Home/jobs/CodeCoverage/workspace/Project/build/TEST_AFTER_BUILD = YES – Giuseppe 2013-03-27 14:31:04

0

gcovr應當從.gcda和.gcno文件所在的文件夾中執行。根路徑是源文件(.c或.cpp)所在的文件夾。

使用此命令,該命令如下所示。

rr-mac:gcdaFolder$ gcovr -r /path_to_C_sourceFiles/ .

對於下面的命令輸出的HTML文件的工作

rr-mac:gcdaFolder$ gcovr --html -o Filename_rp.html -r /path_to_C_sourceFiles/ .

注:(。)結尾的點是必需的

+0

'。'是什麼意思?在最後指定? ' – 2016-09-24 01:11:55

+0

'。'指定當前目錄 – 2017-04-25 12:05:46