# 自动代码覆盖率设置

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

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

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

## 代理的工作原理

代理在三个阶段中工作：

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

## 代理停止时

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

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

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

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

## 拉取请求结果

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

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

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

## 延伸阅读

* [为存储库设置代码覆盖率](/zh/code-security/how-tos/maintain-quality-code/set-up-code-coverage#automatic-setup)
* [GitHub 代码质量](/zh/code-security/concepts/code-quality/code-quality)