1

我正在为 iOS 应用程序设置代码覆盖率。我正在使用 XCode 5.0.2 和 gcovr 3.1 来测试和执行 iOS 7 设备的代码覆盖率。我最初在.gcda文件生成方面遇到了问题,但我关注了这个博客并解决了这个问题。

我已将“生成测试覆盖率文件”设置为“是”,“仪器程序流程”设置为“是”,仅用于调试模块。我还在-fprofile-arcs -ftest-coverage“其他 C 标志”中设置了调试模块。__gcov_flush()当应用程序终止时,我已在我的应用程序代码中添加。

现在 .gcda 文件生成没有问题。

然后我将它复制到我的主目录中的工作区。在工作区中,我尝试运行应用程序的代码覆盖率。我从命令行执行gcovr命令,为我拥有的 252 个 gdca 文件传递–object-directory​​和gcov命令运行。最后我得到这个输出:

Gathered coverage data for 0 files

请帮助我解决问题。我花了很多时间浏览类似的问题,但没有一个解决方案奏效。

4

4 回答 4

2

我没有尝试将 .gcda 文件复制到其他地方,但是如果我 cd 到默认生成 gcda 文件的目录,然后不带参数运行 gcovr,我会得到有效的结果。也许这就是你需要做的?

于 2014-04-16T20:04:34.573 回答
1

当我尝试运行 gcovr 但启用了不同的(来自编译的)gcc 版本时,我遇到了这个问题。在运行 gcovr 时,请尝试在编译项目时检查 gcc 版本是否与 gcc 版本相同。

于 2021-04-30T06:03:10.280 回答
0

对于 Xcode Coverage 结果 0 文件,您应该使用 .gcda 和 .gcno 文件指定对象目录,并且当您拥有诸如“Myproject”之类的文件夹并且所有源代码为时,您的根路径应包含源文件(.m .h)在该文件夹中,命令如下所示:

gcovr --root="我的项目/。" --object-directory = "构建/中间体/ /../ /Objects-normal/x86-64/"

于 2016-10-09T07:12:12.200 回答
0

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:42:26.683 回答