5

我想用 Cobertura 设置我的 Jenkins 来跟踪代码覆盖率。不幸的是,我无法生成有效的 xml。

我在用着:

  • 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 读取,但不能显示有关源文件的任何详细信息。

4

3 回答 3

3

在使用 XCode 时,我发现$WORKSPACE/build用作构建目录有助于解决这个问题。这将派生数据目录排除在外,并将我的目标文件整齐地保存在构建目录中。它还可以防止两个构建相互干扰。

如果使用 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 Mini 农场的配置非常满意。

于 2013-03-26T22:03:05.163 回答
2

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/ .

注意:最后的点(。)是强制性的

于 2016-08-12T12:48:15.107 回答
1

gcovrpython 脚本似乎不支持源代码树构建。

我在这里提出了一个关于此的错误报告https://github.com/gcovr/gcovr/issues/61

于 2014-08-14T15:46:39.723 回答