2013-03-26 99 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