3

我正在尝试获取单元测试的代码覆盖率(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 查看覆盖率统计!

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

4

2 回答 2

4

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

-fprofile-arcs -ftest-coverage

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

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

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

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

于 2012-10-17T07:46:44.683 回答
1

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

GCC_PREPROCESSOR_DEFINITIONS = GCOV_ENABLED=1

GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES

GCC_GENERATE_TEST_COVERAGE_FILES = YES

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

于 2012-05-31T19:21:38.547 回答