You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode xccov命令报错“Failed to load coverage archive”求助

xcrun xccov生成覆盖率报告时报错找不到Metadata.plist的可能原因

针对你在CI环境使用Test Plans,执行xcrun xccov view --report --json path/to/App.xcresult > ./test_output/reports/xccov.json时出现的报错(找不到/tmp/action.xccovarchive/Metadata.plist,同时伴随extension point警告),以下是几个可能的排查方向:

  • Test Plans覆盖率配置未完全启用
    检查Test Plan中每个测试目标的设置,确认是否都勾选了Gather coverage for选项。如果是新增了测试目标或者修改过Test Plan配置,很可能覆盖率收集被意外关闭,导致xcresult里根本没生成覆盖率归档文件,xccov自然找不到对应文件。

  • CI环境下xcresult文件不完整或未写入完成
    CI中测试任务结束后,可能xcresult文件还在后台写入就被拿来执行xccov命令,或者CI的缓存清理机制误删了xcresult内部的覆盖率子文件。可以先在CI环境里执行xcrun xcresulttool get --format json --path path/to/App.xcresult,查看返回的JSON里是否包含coverage相关节点,确认xcresult里确实有覆盖率数据。

  • 命令行工具与Xcode IDE版本不匹配
    即使你用的是Xcode14.3或15,CI环境如果装了多个Xcode版本,xcrun调用的xccov可能和生成xcresult的Xcode版本不一致。在CI脚本里明确指定Xcode路径,比如sudo xcode-select -s /Applications/Xcode_15.app,确保命令行工具和当前使用的Xcode版本统一。

  • 临时目录权限问题
    xccov会在/tmp/action.xccovarchive临时解压覆盖率归档,如果CI运行用户没有该目录的读写权限,就会导致无法创建或读取Metadata.plist。可以检查CI用户的权限,或者尝试设置TMPDIR环境变量到CI有读写权限的路径,比如export TMPDIR=/Users/ci-user/tmp后再执行xccov命令。

  • xcresult文件损坏或未生成覆盖率数据
    测试执行过程中如果出现崩溃、中断,可能导致xcresult损坏;或者测试虽然通过,但覆盖率数据没被正确写入。可以在本地用相同的Test Plan跑测试,然后用Xcode打开生成的xcresult,看看是否能正常显示覆盖率——如果本地正常,那问题大概率出在CI环境的配置或执行流程上。

内容的提问来源于stack exchange,提问作者jshapy8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:07:03