Skip to main content

自动代码覆盖率设置

AI 提供支持的代理可以分析存储库并生成工作代码覆盖率工作流,因此无需手动创作 CI 配置即可开始跟踪测试覆盖率。

谁可以使用此功能?

GitHub Team 或 GitHub Enterprise Cloud

为代码覆盖率使用自动设置时,AI 驱动的代理会分析存储库、标识测试框架,并打开一个拉取请求,其中包含一个可供评审的覆盖工作流。

使用此功能无需额外付费。

代理的工作原理

代理在三个阶段中工作:

  1. 发现: 代理读取 CI 配置、文档和生成文件,以了解项目结构并识别测试框架。
  2. 执行: 代理会安装依赖项,生成项目,并运行启用了覆盖范围的测试。 如果尚未配置覆盖率工具,代理会将其添加到项目配置(例如, vitest.config.tsjest.config.js)。
  3. 工作流集成: 如果代理生成有效的覆盖报告,它会检查存储库是否已具有针对 GitHub Actions 拉取请求运行测试的工作流。 如果是这样,代理会通过覆盖上传步骤扩充该工作流。 如果没有,它将创建新的工作流文件并打开拉取请求。

代理停止时

在以下情况下,代理可能会在打开拉取请求之前停止:

  • 未找到测试。 代理找不到要检测的测试,因此没有可为其生成覆盖范围。
  • 无法重现生成。 缺少专用注册表、专有 SDK 或系统依赖项,阻止代理验证测试套件。

如果代理停止或产生意外结果,可以查看代理的会话日志以了解详细信息。 导航到存储库中的“ 任务 ”选项卡,查找与工作流生成尝试关联的会话。

  • 不支持的覆盖率报告转换。 代理不会从仅公开聚合计数器的报表中重新构造 Cobertura XML。 例如,JaCoCo XML 不包含足够的行和分支结构来上传可信 Cobertura,因此仅生成 JaCoCo XML 的 JVM 项目可能需要手动设置。

拉取请求结果

注意

代理会立即打开拉取请求,其中包含不包含代码更改的初始规划提交。 实际实现提交通常在几分钟后到达。 如果拉取请求最初显示 0 个已更改的文件,请等待几分钟并刷新页面。

如果代理成功打开拉取请求,则拉取请求可能处于以下状态之一:

  • 可合并 as-is: 工作流在 CI 中成功完成,并正确上传覆盖率。
  • 准备循环访问: 工作流运行但需要调整(例如缺少机密、自承载运行程序配置或本地验证与 CI 之间的路径差异)。
  • 用作参考: 维护人员可能倾向于自行配置覆盖范围,使用代理的拉取请求作为它发现的生成和测试命令的起点。

延伸阅读