gcovr 和 Xcode 5 的代码覆盖率不起作用
Posted
技术标签:
【中文标题】gcovr 和 Xcode 5 的代码覆盖率不起作用【英文标题】:code coverage with gcovr and Xcode 5 is not working 【发布时间】:2013-10-07 09:53:16 【问题描述】:我正在使用 gcovr 为 cobertura 生成代码覆盖率。 xcode 4.6 一切正常。现在我更新到 xcode5,我得到的一切都是 0% 的覆盖率......
我的设置:
gcovr 3.0 Xcode 5 (Apple LLVM 5) “生成测试覆盖文件”设置为是 “仪器程序流程”设置为“是”我使用的命令是:
gcovr -r . --object-directory Build/Intermediates/myApp.build/Debug-iphonesimulator/myApp.build/Objects-normal/i386 --exclude '.*Tests.*' --exclude '.*KiwiUnitTest' --exclude '.*main.*' --xml > reports/coverage.xml
是否有人遇到相同或更好的问题,有解决方案吗? :)
【问题讨论】:
Xcode5 Code Coverage (from cmd-line for CI builds)的可能重复 不,这不是骗子。 @GardnerBickford 的建议与生成 .gcno/.gcda 文件有关。这个问题与 gcovr 的使用(和故障)有关。 @Rayfleck 请再次阅读此问题以及答案 [ Xcode5 Code Coverage (from cmd-line for CI builds)](***.com/questions/18394655/…) 这就是升级到 Xcode 后 gcovr 无法正常工作的原因5 是因为 Xcode 5 编译器不会将 gcno/gcda 文件刷新到磁盘。 如果没有这些文件,gcovr 将报告没有覆盖范围。 @GardnerBickford - 啊,是的,我的立场是正确的。谢谢。我投票决定关闭这篇文章。 Xcode 5.1 修复了这个问题并添加了 llvm-cov 【参考方案1】:现在它又可以工作了... :)
正如@kenji 所说,Xcode 5.1 解决了这个问题。顺便说一句
这是我的工作环境和配置,有兴趣的朋友可以看看
Xcode 5.1.1(来自 AppStore) gcovr 3.1-prerelease(使用 easy_install 安装)在“构建设置”下的项目中,我设置了以下内容:
“生成测试覆盖文件”设置为是 “仪器程序流程”设置为“是”运行测试后,我执行以下命令:(与 jenkins 发生)
gcovr -r . --object-directory Build/Intermediates/MyProj.build/Debug-iphonesimulator/KiwiUnitTest.build/Objects-normal/i386 --exclude '.*Tests.*' --exclude '.*KiwiUnitTest' --exclude '.*main.*' --xml > reports/coverage.xml
完成。
对不起,让你们等待答案,谢谢大家的帮助。
【讨论】:
【参考方案2】:首先确保您的 .gcda 和 .gcno 文件已创建!
(检查:~/Library/Developer/Xcode/DerivedData/YOUR-PROJECT-NAME/Build/Intermediates/YOUR-PROJECT-NAME.build/Debug-iphonesimulator/YOUR-PROJECT-NAME。构建/对象-正常/i386)
如果它们已成功创建,您需要执行以下操作: (如果不检查您问题下的 cmets)
将 i386 文件夹中的所有文件(如上所述的完整路径)复制到您的文件夹中 .h 和 .m 文件所在的工作区。
运行终端并将您的父工作目录更改为您的工作区
cd [YOUR WORKSPACE PATH]
运行 gcovr
gcovr -r . --xml > reports/coverage.xml
如果您使用的是 jenkins(我假设),这将是您的进一步步骤: Generating gcda files to view the code-coverage from XCTests in ios with Jenkins
如果您还有问题,请告诉我!
【讨论】:
如果您定义 --object-directory,最新版本的 gcovr (v3.2) 似乎不会处理任何文件。只有将您的 .gcno 和 .gcna 文件复制到 -r 参数定义的路径,它才会起作用。 github.com/gcovr/gcovr/issues/61以上是关于gcovr 和 Xcode 5 的代码覆盖率不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 gcov/lcov/gcovr 在 Android APK 下获取代码覆盖率
lcov 和 gcovr -r 命令正在为 UT 生成 cpp 文件代码覆盖率报告
展示C代码覆盖率的gcovr工具简单介绍及相关命令使用演示样例
是否可以将来自两个可执行文件的覆盖率数据与 gcov/gcovr 合并?