我想用Cobertura设置我的Jenkins来跟踪代码覆盖率。 不幸的是我无法生成有效的xml。
我正在使用:
我的项目正确生成代码覆盖率文件,但使用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 :(得分:3)
使用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小农场的配置非常满意。
答案 1 :(得分:1)
gcovr
python脚本似乎不支持源树构建。
我在这里提出了一个关于此问题的错误报告https://github.com/gcovr/gcovr/issues/61
答案 2 :(得分:1)
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/ .
强>
注意:末尾的点(。)是强制性的