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

Xcode 9.3主目标代码覆盖率异常问题求助

排查Xcode 9.3主应用代码覆盖率缺失的方向

我之前也碰到过Xcode版本升级后代码覆盖率异常的情况,结合你描述的现象,给你几个具体的排查点:

  • 检查主应用目标的Build Settings配置
    虽然Scheme里已经勾选了覆盖率收集,但主应用目标本身的编译设置可能被Xcode升级重置了。找到主应用目标的Build Settings,搜索以下两个选项,确保Debug配置下都设为YES:

    • Generate Test Coverage Files
    • Instrument Program Flow
  • 彻底清理构建缓存
    Xcode升级后残留的缓存很容易导致各种奇怪问题,按以下步骤操作:

    1. 按下 Cmd+Shift+K 清理当前构建文件夹
    2. 按下 Cmd+Option+Shift+K 清理Derived Data
    3. 完全退出Xcode,重新打开项目后再运行测试
  • 确认测试目标对主应用的引用是否正确
    主应用的覆盖率数据需要通过测试目标来收集,检查测试目标的Build Phases:

    • 确保Target Dependencies里包含主应用目标
    • 确认Compile Sources里有没有遗漏主应用的关键代码文件(如果是直接引用代码的情况)
      另外,如果你用了CocoaPods,检查Podfile里是否正确配置了测试目标对主应用的依赖,避免动态库加载问题导致覆盖率无法追踪
  • 修正Scheme的"some targets"配置
    当你选择"some targets"时,不能只勾选主应用目标,必须同时选中测试目标和主应用目标——因为测试目标是执行测试的载体,主应用的覆盖率数据需要通过它来收集。同时检查Scheme的Test选项卡下的Info标签,确保测试目标使用的是Debug配置

  • 检查主应用的代码优化设置
    Xcode 9.3的编译器优化可能影响覆盖率工具的追踪能力,找到主应用目标的Build Settings,搜索Optimization Level,确保Debug配置下设置为None [-O0],如果是更高等级的优化,可能会让覆盖率工具无法识别代码路径

  • 尝试新建测试Scheme
    旧Scheme在Xcode版本升级后可能存在配置损坏的情况,新建一个专门的测试Scheme:

    1. 点击Xcode顶部的Scheme下拉菜单,选择New Scheme...
    2. 选择测试目标创建新Scheme
    3. 在新Scheme的Test选项卡中重新勾选覆盖率收集选项,指定主应用和测试目标,再运行测试看看效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:07:46