2014-03-28 28 views
0

我正在为iOS应用程序设置代码覆盖率。我使用XCode 5.0.2和gcovr 3.1来测试和执行iOS 7设备的代码覆盖率。我最初有.gcda文件生成问题,但我跟着this博客并解决了这个问题。Gcovr生成0个文件的覆盖率数据

我已经为调试模块设置'生成测试覆盖文件'为'是','仪器程序流程'为'是'。我还在'Other C Flags'中为调试模块设置了-fprofile-arcs -ftest-coverage。应用程序终止时,我在应用程序代码中添加了__gcov_flush()

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

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

Gathered coverage data for 0 files

请帮我解决这个问题。我花了很多时间浏览类似的问题,但没有一个解决方案正在制定中。

+0

你知道了吗? – ksl

+0

它可能无法找到源文件?看到我发布的与我遇到的类似问题有关的答案。 http://stackoverflow.com/q/25403165/820657 – ksl

回答

2

我还没有尝试复制其他地方的.gcda文件,但如果我cd到缺省情况下生成gcda文件的目录,则不带参数运行gcovr,我会得到有效的结果。也许这就是你需要做的事情?

+0

我有同样的问题。如果我尝试你的建议,我得到以下输出: ------------------------------------ ------------------------------------------ GCC代码覆盖率报告 Traceback(最新最后调用): 文件 “在/ usr/local/bin目录/ gcovr”,线路1972年,在 print_text_report(covdata) 文件 “在/ usr/local/bin目录/ gcovr”,线路822,在print_text_report 输出。写(“目录:”+ options.root +“\ n”) TypeError:无法将'NoneType'对象隐式转换为str – ksl

+1

ksi,我发现输出XML('-x')而不是默认表格格式否则我会得到那个错误。 – pr1001

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/ .

注:()结尾处的点是强制性的

0

对于Xcode的覆盖效果0文件,你应该使用.gcda和.gcno文件来指定对象目录,并且你的根路径应该包含在源文件(.M .h)中 当你有一个文件夹,例如“MYPROJECT”和所有的源代码是该文件夹中,该命令是这样的:

gcovr --root =“MYPROJECT /。 “ --object-directory =“Build/Intermediates//..//Objects-normal/x86-64 /”

相关问题