我在Xcode 7中为某个iOS项目提供代码覆盖率报告时遇到问题。
我按照此处给出的说明操作: http://mgrebenets.github.io/mobile%20ci/2015/09/21/code-coverage-for-ios-xcode-7/
在我尝试的三个项目中,有两个工作正常,但有一个项目令我头疼。使用llvm-cov实用程序从收集的配置文件数据生成报告时,如下所示:
xcrun llvm-cov report -instr-profile Coverage.profdata MyAppBinary
我收到错误消息:
error: Failed to load coverage: The file was not recognized as a valid object file
我检查了"收集覆盖率数据"已启用测试方案。我还检查了-fprofile-instr-generate和-fcoverage-mapping编译器选项是否传递给了clang。
文件大小和类型对我来说也是有效的:
ilMac:llvm-cov-test ilja$ ls -la
total 61976
drwxr-xr-x 4 ilja staff 136 14 Okt 21:53 .
drwxr-xr-x+ 75 ilja staff 2550 14 Okt 16:31 ..
-rw-r--r-- 1 ilja staff 1797416 14 Okt 21:53 Coverage.profdata
-rwxr-xr-x 1 ilja staff 29932040 14 Okt 16:32 MyAppBinary
ilMac:llvm-cov-test ilja$ file Coverage.profdata
Coverage.profdata: data
ilMac:llvm-cov-test ilja$ file MyAppBinary
MyAppBinary: Mach-O universal binary with 2 architectures
MyAppBinary (for architecture i386): Mach-O executable i386
MyAppBinary (for architecture x86_64): Mach-O 64-bit executable x86_64
我还注意到"覆盖范围"用于测试运行的Xcode中的选项卡是"没有覆盖数据"而不是指标栏。
知道我做错了吗?
答案 0 :(得分:1)
发布我的解决方案以防有人需要它。 关注这篇文章code coverage xcode 7 我做了以下步骤:
/usr/bin/xcodebuild test -workspace MyApp.xcworkspace -scheme MyAppTests -configuration DebugMyApp -destination "platform=iOS Simulator,OS=9.3,name=iPhone 6" -enableCodeCoverage YES
slather coverage \
--input-format profdata \
--cobertura-xml \
--ignore "../**/*/Xcode*" \
--output-directory slather-report \
--scheme MyAppTests \
--workspace MyApp.xcworkspace \
MyApp.xcodeproj
答案 1 :(得分:0)
该项目只有" Build Active Architecture"将Xcode构建设置中的设置设置为" YES"。在将其切换为" NO"之后,我现在可以运行llvm-cov命令。但是,数字不会删除Xcode中显示的数字。
答案 2 :(得分:0)
我能够通过仅使用x86_64架构来解决问题。
使用ARCHS =" x86_64" VALID_ARCHS =" x86_64的"在你的xcodebuild命令中