我正在为iOS应用程序设置代码覆盖率。我正在使用XCode 5.0.2和gcovr 3.1来测试和执行iOS 7设备的代码覆盖。我最初遇到.gcda
文件生成问题,但我关注this博客并解决了问题。
我已将“生成测试覆盖文件”设置为“是”,“仪器程序流程”仅设置为“是”。我还在'Other C Flags'中为Debug模块设置了-fprofile-arcs -ftest-coverage
。当应用程序终止时,我在应用程序代码中添加了__gcov_flush()
。
现在.gcda文件正在生成而没有问题。
然后我将其复制到我的主目录中的工作区。从工作区,我尝试为应用程序运行代码覆盖。我从命令行执行gcovr
命令,为我拥有的252 gdca文件传递–object-directory
和gcov
命令。最后我得到了这个输出:
Gathered coverage data for 0 files
请帮我解决问题。我花了很多时间浏览类似的问题,但没有一个解决方案正在解决。
答案 0 :(得分:2)
我没有尝试将.gcda文件复制到别处,但是如果我cd到默认情况下生成gcda文件的目录,那么运行没有参数的gcovr,我得到有效的结果。也许这就是你需要做的事情?
答案 1 :(得分: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/ .
强>
注意:末尾的点(。)是强制性的
答案 2 :(得分:0)
对于Xcode Coverage结果0文件,您应该使用.gcda和.gcno文件指定object-directory,并且您的根路径应包含源文件(.m .h) 如果您有一个文件夹,例如“Myproject”,并且您的所有源代码都在该文件夹中,则命令如下所示:
gcovr --root =“Myproject /。” --object-directory =“Build / Intermediates / /../ / Objects-normal / x86-64 /”
答案 3 :(得分:0)
当我尝试运行 gcovr 时遇到了这个问题,但启用了不同的(与编译)gcc 版本。 在运行 gcovr 时,请尝试在编译项目时检查您的 gcc 版本是否与 gcc 版本相同。