OSX Lion 上未生成代码覆盖率文件

Posted

技术标签:

【中文标题】OSX Lion 上未生成代码覆盖率文件【英文标题】:Code coverage files not being generated on OSX Lion 【发布时间】:2012-04-11 10:50:13 【问题描述】:

我正在尝试获取单元测试的代码覆盖率(Mac OS X Lion 10.7 (11A2061) 上的 Xcode 4.2.1 (4D502)),但不知何故 .gcda 文件没有被创建。我可以在单元测试目标的 .../Objects-normal/i386 文件夹中看到 .d 和 .o 文件,但是正在单元测试的文件缺少 gcno/gcda 文件,因此我无法生成覆盖率正在测试的内容的统计信息。

在主要目标上,我确实看到每个文件的 .d、.o 和 .gcno 文件。

所以,我相信我已经正确设置了项目设置,但是 OS X Lion 确实缺少一个“小”东西。我已经尝试了http://code.google.com/p/coverstory/wiki/UsingCoverstory 中提到的步骤,但似乎没有解决我的问题。

注意:我能够让它在 Snow Leopard 上工作并使用 CoverStory 查看覆盖率统计数据!!

这方面的任何解决方案/方向都会非常有帮助。谢谢!!

【问题讨论】:

您的测试是否在 Lion 上使用覆盖配置成功执行? 【参考方案1】:

我缺少 gcda 文件,但在某些网站上找到了解决方案。您需要添加这些标志:

-fprofile-arcs -ftest-coverage

到“其他 C 标志”。运行测试后,存在 gcda 文件。

将“Generate Test Coverage Files”和“Instrument Program Flow”都设置为YES后生成gcno文件。

我正在使用 Xcode 4.3.2 和 llvm 编译器。

另外,我发现将 Generate Profiling Code 设置为 YES 也会导致生成 gcda 文件。

【讨论】:

【参考方案2】:

确保为您的代码和测试设置了以下构建设置:

GCC_PREPROCESSOR_DEFINITIONS = GCOV_ENABLED=1

GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES

GCC_GENERATE_TEST_COVERAGE_FILES = YES

构建/运行测试应该会创建缺少的 gcda 文件。我遇到了这个问题,以至于我有一个包含上述内容的 xcconfig 文件模板。您不必使用最新版本的 Xcode 链接 gcov 库。

【讨论】:

以上是关于OSX Lion 上未生成代码覆盖率文件的主要内容,如果未能解决你的问题,请参考以下文章

用于 Typescript 的 Sonarqube 上未显示代码覆盖率

是否有 GCC 编译指示可以覆盖某些代码段的调试信息 (-g) 的生成?

如何从代码覆盖率数字中排除 browserify 生成的代码?

lcov 和 gcovr -r 命令正在为 UT 生成 cpp 文件代码覆盖率报告

Xcode 7 - 代码覆盖数据生成失败

Ionic 4 Karma 代码覆盖生成没有数据的 HTML 文件