跳至主要内容

使用 AI 提升最近合并代码的质量

浏览 GitHub 代码质量对最近合并代码的检测结果,并使用 Copilot 自动修复或将修复工作委派给 Copilot 云代理。

谁可以使用此功能?

具有 写入 访问权限的用户

GitHub 团队或 GitHub 企业云

注意

GitHub 代码质量目前处于公开预览阶段,可能会有变更。在公开预览期间,代码质量不会产生费用,但代码质量扫描会消耗 GitHub Actions 分钟数。

简介

本教程展示如何浏览并修复代码质量通过 AI 分析检测到的最近合并到默认分支的代码质量问题。

改进最近合并文件的质量,可降低仓库的技术债务,让其他开发者更容易在活跃开发的文件上工作。

代码质量有两道防线

代码质量会扫描拉取请求并对质量问题进行评论,随后在拉取请求合并后进行第二次 AI 扫描。这两种扫描使用互补的技术。

  • 拉取请求扫描使用 CodeQL 规则来识别问题。此分析经过充分测试,擅长发现代码不符合质量规则的地方,并且能够分析大量文件。但它仅支持一部分编程语言,且在没有规则的情况下无法识别问题。

  • 最近合并文件扫描使用大语言模型分析您最近更改的文件,最多报告 5 个文件的检测结果。此分析跨所有语言检查代码,不受规则限制,并提供上下文洞察和建议,能够超越 CodeQL 规则的范围。

先决条件

1. 查看仓库的 AI 建议

在对默认分支最近合并的文件进行代码质量扫描后,您可以在 AI 检测视图中看到结果,该视图显示最多 5 个文件的检测。

  1. 导航至仓库的 安全与质量 选项卡。
  2. 点击展开 代码质量,然后点击 AI 检测

注意

如果仓库不活跃或 LLM 分析未能为最近推送到默认分支的代码提供改进建议,则此视图为空。

2. 探索仓库的建议改进

AI 检测页面上,每个文件都会列出已识别的质量问题数量以及文件推送到默认分支的时间。

  • 点击文件名查看检测到的质量问题详情及建议修复。

Screenshot of the "AI findings" view for code quality.

3. 将修复工作委派或自行打开拉取请求

您可以打开拉取请求将建议的自动修复应用于文件,或将修复工作委派给 Copilot 云代理。委派工作给 Copilot 云代理需要 Copilot 许可证。
注册 Copilot

将工作委派给 Copilot 云代理

您可以请求云代理打开拉取请求,使用建议的更改作为提示对文件进行改进。如果您认为建议的更改不错且想打开一个对多个文件进行修复的拉取请求,这是最佳选项。

委派拉取请求的创建

  • 多个文件: 选择要包含的文件,然后在文件列表标题处点击 将所选分配给 Copilot
  • 单个文件: 对该文件点击 分配给 Copilot

云代理在设置工作时会有延迟。当拉取请求打开且工作进行中时,会显示一个横幅,并附带指向拉取请求的链接。

您可以跟踪 Copilot 云代理的工作

自行打开拉取请求

您可以自行打开拉取请求以应用自动修复建议。以下情况适合此选项:

  • 您希望在本地或 GitHub Desktop 上先处理更改,然后再打开拉取请求
  • 您没有 Copilot 云代理的访问权限

注意

当您自行打开拉取请求时,一次只能对单个文件提交修复。若要一次性修复多个文件,必须使用 Copilot 云代理。

打开拉取请求

  1. 点击文件名查看检测到的质量问题详情。

  2. 审阅问题及建议的修复方案。

  3. 展开 分配给 Copilot 下拉菜单,然后点击 打开拉取请求以将默认选项更改为 “打开拉取请求”。系统会记住您的偏好。

    Screenshot of the "AI findings" view for code quality.

  4. 点击 打开拉取请求,弹出提交选项对话框。

  5. 点击 提交更改,创建包含修复的拉取请求。

4. 为拉取请求审阅者提供上下文

说明为何对代码提出更改的背景是促使团队成员审阅您的拉取请求的最佳方式。如果您使用了 Copilot 云代理,拉取请求摘要已包含该请求所修复问题的完整细节。

如果您直接从 GitHub 代码质量视图打开拉取请求,拉取请求摘要会链接到 “AI 检测” 视图。您可能希望将 AI 检测视图中的部分说明复制到拉取请求摘要中。

Screenshot of a pull request summary created by GitHub Code Quality.

5. 看到您的更改对 AI 检测产生影响

当您在合并拉取请求后返回 “AI 检测” 视图时,已修复的检测将不再显示。

后续步骤

© . This site is unofficial and not affiliated with GitHub, Inc.