Skip to main content

在合并拉取请求之前修复代码质量问题

在质量问题到达默认分支之前进行捕获,并使用 Copilot自动修复 和 Copilot云代理 进行修复。

谁可以使用此功能?

具有写入访问权限的用户

GitHub Team 或 GitHub Enterprise Cloud

注意

GitHub Code Quality 当前正处于 公共预览版 阶段,并可能会发生变化。 在 公共预览版期间,Code Quality 不会计费,尽管 Code Quality 扫描将使用 GitHub Actions 分钟。

介绍

本教程介绍如何在 GitHub Code Quality 上处理拉取请求,以识别出更改可能无意中引入的代码质量问题,以及如何利用 Copilot自动修复 和 Copilot云代理 来解决代码质量问题中的发现。

提前捕获问题的好处

尽早捕获代码质量问题使团队的代码库保持状态。 GitHub Code Quality 对代码进行检查:

  • 可靠性:例如,逻辑错误、不安全的错误处理或可能导致应用崩溃或行为不可预知的争用条件。 通过尽早解决此类问题,使软件更可靠且更可依赖。
  • 可维护性:例如,重复的代码、过于复杂的逻辑、未使用的变量或违反编码最佳做法。 解决这些问题可使代码更简洁、更易于阅读,因此将来的更改速度更快且风险更低。

1.了解GitHub Code Quality在拉取请求中如何工作

打开拉取请求时,GitHub Code Quality 使用 CodeQL 自动扫描您的更改,以发现质量问题,例如上面描述的问题。

扫描 CodeQL 的结果将作为拉取请求上的注释报告,由 github-code-quality[bot]留下。 每个注释对应于在您的更改中检测到的特定代码质量问题,并附带建议的自动修复。

注释按严重性(错误警告注意)进行标记,因此可以看到哪些发现最关键。

2.根据严重性确定修复的优先级

扫描注释,并首先识别具有最高严重级别(“错误”)的发现。

如果没有“错误”发现,请查找下一个严重性级别的发现(“警告”),等等。

高严重性发现表明更严重的代码质量问题,这些问题更有可能在代码库中引入可靠性或可维护性问题。 通过解决高严重性发现,你正在执行最有影响力的工作来维护团队代码的质量。

注意

如果拉取请求包含**** 特定严重性级别或更高级别的发现,存储库管理员可能已设置代码质量门,该入口Code Quality对拉取请求进行合并。 请参阅“解决拉取请求中的阻塞”。

3. 利用 Copilot自动修复 或 Copilot云代理 修复发现

Copilot自动修复

对拉取请求讨论的注释包括建议的 自动修复 ,你可以直接将其提交到你的拉取请求。 仔细检查建议的自动修复,从逻辑、安全性和样式方面进行评估,然后单击 提交建议

无需Copilot许可证来应用这些建议。

Copilot云代理

或者,如果你有 Copilot 许可证,则可以将修正工作委托给 Copilot云代理。 对提到 @Copilot 的拉取请求进行评论,并请求 Copilot 修复检测到的问题。

显示调用 Copilot 云智能体的 PR 注释的屏幕截图。

          Copilot 使用眼睛表情符号 (👀) 响应你的批注,启动新的代理会话,并打开具有必要修复的拉取请求。

可以跟踪 Copilot云代理'工作:

你需要一个Copilot许可证来调用Copilot云代理。
注册 Copilot

4. 消除无关的发现

如果在代码库的上下文中不相关或不可执行,则可以忽略该检测结果。 常见驳回发现的原因包括:

  • 该发现位于不再维护的旧代码中。
  • 团队的编码标准中有一个为众所知的例外。
  • 这是一个误报,不会构成真正的质量风险。

消除不相关的警报可使质量检查专注于有意义的问题。

5. 推送更改并等待扫描结果。

修复或驳回调查结果后,将更改推送到与拉取请求关联的分支。 GitHub Code Quality 将自动重新扫描您的更改并相应地更新拉取请求上的评论。

6.检查存储库的代码质量分级

具有写入访问权限的任何人都可以查看存储库的总体代码质量分级,该分级汇总了代码在默认分支中的可靠性和可维护性的状态。

若要查看存储库的评级,请导航到 Security and quality 存储库的选项卡,在边栏中展开 代码质量 ,然后单击 常规发现

通过在合并拉取请求之前解决问题,你直接帮助维护了这些评分。

后续步骤

  • 解决默认分支中的代码质量发现问题,并了解存储库的可靠性和可维护性评级。 请参阅“提高存储库代码的质量”。
  • 社区讨论中提供关于的反馈。