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 生成的代码?