如何解决xcrun llvm-cov 显示:未找到覆盖数据
xcrun llvm-cov show 命令返回错误:Failed to load coverage: No such file or directory 的可能原因是什么?
我有一个 iOS 库。 lib 构建的结果是 *.a 二进制文件。 我在项目中有一个方案,其中也包含 GTest 单元测试。
所以我执行:
xcodebuild test \
-sdk iphonesimulator \
-destination "$DESTINATION" \
-derivedDataPath "$ROOT"/DerivedData \
-scheme unitTestsTarget \
-project "$ROOT"/libProject.xcodeproj \
-enableCodeCoverage YES
在那之后
xcrun llvm-profdata merge .../Coverage.profdata .../EA8FF09E-3BFE-42D2-BFA7-A39D69E7F688-45921.profraw -output ./merged.profdata
和
xcrun llvm-cov show -format=html -use-color=true -output-dir=./coverage-html -instr-profile ./merged.profdata -object ./DerivedData/Build/Products/Debug-iphonesimulator/myLib.a -ignore-filename-regex='\''.*\.h'\'''
最后一个命令给了我
error: ./myLib.a: Failed to load coverage: No such file or directory
我有 3 个结构相似的模块,其中一个工作正常,另外两个给我这个错误。
我真的很感激有人可以提示此错误的可能原因以及尝试的可能解决方案。
解决方法
我在使用 Xcode 构建的静态库时遇到了同样的问题。
通过一些探索,我注意到传入在构建期间生成的显式 .o
文件似乎有效,但输出仅限于该文件。
xcrun llvm-cov report \
--instr-profile=Build/ProfileData/40F9DE10-F76F-46C0-A8D2-E1D427DE08A5/Coverage.profdata \
--object Build/Intermediates.noindex/MyStaticLib.build/Debug-iphonesimulator/MyStaticLib.build/Objects-normal/x86_64/some_file.o
我尝试手动链接 Build 文件夹中存在的所有这些 .o
文件,如下所示,以生成组合目标文件:
ld -r -o CombinedObject.o \
Build/Intermediates.noindex/MyStaticLib.build/Debug-iphonesimulator/MyStaticLib.build/Objects-normal/x86_64/*.o
接下来,我能够运行并获得覆盖率报告。
xcrun llvm-cov report \
--instr-profile=Build/ProfileData/40F9DE10-F76F-46C0-A8D2-E1D427DE08A5/Coverage.profdata \
CombinedObject.o
所以基本上我必须将单独的 .o
文件组合成一个组合的目标文件,然后 llvm-cov
能够处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。