Xcode 7 生成 GCOV

Posted

技术标签:

【中文标题】Xcode 7 生成 GCOV【英文标题】:Xcode 7 generating GCOV 【发布时间】:2016-01-22 02:17:31 【问题描述】:

所以 Xcode 7 中的热门新功能是集成在 XCode 中的代码覆盖 - 耶!有了这个新功能,Apple 的新代码覆盖率格式.profdata 也随之而来。

我们需要在 Cobertura 报告中显示代码覆盖率报告(在 Jenkins 中加载)。目前无法将.profdata 转换为 Cobertura XML 报告 (it is on its way however)。

在那之前,我们需要依赖“旧”的 gcov。由于某些未知原因,XCode 7 生成 .gcno 和 .gcda,但是当您让 gcovr 创建 Cobertura 报告时,它显示所有文件的覆盖率为 0%(我们肯定有一些覆盖率)。

我们尝试返回到 XCode 6.4,生成的 gcov 文件在运行 gcovr 时显示正确的覆盖率。

有人遇到同样的问题吗?任何可能的解决方案?

【问题讨论】:

如果您想使用托管服务:github.com/codecov/example-swift(Slather 也是一个选项github.com/venmo/slather/pull/99) 你发现了吗? 【参考方案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/ .

注意:末尾的点(.)是强制性的

【讨论】:

【参考方案2】:

在目标的构建设置中设置下一个值:

Generate Legacy Test Coverage Data = YES
Instrument Program Flow = YES
Enable Code Coverage Support = NO

【讨论】:

你为什么不加解释地拒绝投票?它对我有用。

以上是关于Xcode 7 生成 GCOV的主要内容,如果未能解决你的问题,请参考以下文章

XCode 5 / ios7:缺少gcno文件

gcov:从共享库生成 .gcda 输出?

LCOV/GCOV 分支覆盖,C++ 生成分支遍布各处

GCOV入门

GCOV/LCOV,GPROF

Xcode13 未定义符号:___gcov_flush