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

Xcode13生成代码覆盖率失败提示Failed to merge raw profiles如何解决

Xcode 13 代码覆盖率生成失败解决方案

报错信息:
Failed to merge raw profiles in directory /Users/e..l/Library/Developer/Xcode/DerivedData/Picman-dfefadmrrtyfcfduazopvkoniydf/Build/ProfileData/00008027-001221043EE9802E to destination /Users/e..l/Library/Developer/Xcode/DerivedData/Picman-dfefadmrrtyfcfduazopvkoniydf/Build/ProfileData/00008027-001221043EE9802E/Coverage.profdata: No profile data files were written to '/Users/e..l/Library/Developer/Xcode/DerivedData/Picman-dfefadmrrtyfcfduazopvkoniydf/Build/ProfileData/00008027-001221043EE9802E'

配置校验步骤

  • 确认Build Settings中CLANG_ENABLE_CODE_COVERAGE(Code Coverage Support)的值设为Yes,需要对所有测试用到的构建配置统一设置,不要仅单个配置开启。
  • 同步开启GCC_GENERATE_TEST_COVERAGE_FILES(Generate Legacy Test Coverage Files)和GCC_INSTRUMENT_PROGRAM_FLOW_ARCS(Instrument Program Flow)两个编译选项,Xcode13对老项目迁移后的配置兼容存在缺陷,这两个选项是底层生成原始覆盖率数据的必要依赖。
  • 检查测试target(Unit Test/UI Test)的Build Phases配置,确认正确关联了需要统计覆盖率的主target,无依赖缺失或循环依赖问题。

运行环境排查

  • 如果你使用真机运行测试,优先切换到模拟器重试,Xcode13.0存在部分iOS版本真机覆盖率数据写入权限的已知bug,无法正常生成.profraw原始文件。
  • 关闭项目Build Options中的Parallelize Build并行构建选项,重新执行clean后全量构建再运行测试,并行构建会导致混编项目的覆盖率数据生成时序错乱。

手动修复方案

如果以上配置均正确,可手动处理覆盖率生成逻辑,绕过Xcode的自动合并bug:

  1. 运行一次完整测试,进入报错对应的ProfileData目录:
    cd /Users/e..l/Library/Developer/Xcode/DerivedData/Picman-dfefadmrrtyfcfduazopvkoniydf/Build/ProfileData/00008027-001221043EE9802E
  2. 执行ls -la检查目录下是否存在.profraw后缀的原始文件:
    • 如果无.profraw文件,说明测试运行阶段存在异常中断,确认测试用例全部正常执行完成、无强制退出或崩溃情况。
    • 如果存在.profraw文件,手动执行合并命令:xcrun llvm-profdata merge -o Coverage.profdata *.profraw,执行完成后重启Xcode即可正常查看全量覆盖率报告。
  3. 若为Swift/OC混编项目,可在主target的Other Swift Flags中添加-profile-generate和-profile-coverage-mapping两个参数,强制Swift编译器生成覆盖率映射数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:57:04