GitHub Copilot 向评审过程添加的内容

已完成

代码评审和拉取请求评审对于质量至关重要,但它们也可能非常耗时和不均衡。 开发人员在尝试提供深思熟虑的反馈时,通常会处理多种语言、格式不一致和大型差异。 GitHub Copilot 通过充当协作审阅者和助手来帮助缓解此工作负载。 它捕捉常见问题,起草评审评论,总结拉取请求,甚至提示安全风险,为审阅者提供明确的起点。 使用自定义评审说明,你可以指导 Copilot 如你一样监视相同的模式,确保各个团队和代码库都能保持一致性。

在本单元结束时,你将能够:

  • 在代码评审中确定 Copilot 的主要功能。
  • 说明 PRU 如何解锁高级评审功能。
  • 识别 Copilot 评审补充和帮助开发人员的不同方式。

Copilot 在代码评审中的主要功能

Copilot 引入了几个旨在简化评审的功能:

  • PR 摘要:Copilot 可以自动起草拉取请求说明,其中包括更改的清晰摘要和受影响的文件列表。 这可确保审阅者从上下文开始,而不是猜测。

  • 安全修补程序: 将 Copilot 代码评审集成到 GitHub 代码扫描中后,会跨语言标记漏洞。 例如,在 JavaScript 中,Copilot 可以发现传递给 eval() 的未净化输入并给予提示:

    “具有用户输入的 eval()可能会导致代码注入。 将其替换为像 JSON.parse() 这样的安全解析器。然后,它提供一个内联补丁,以符合您的存储库的安全准则。

  • 逐行说明:审阅者可以突出显示代码并要求 Copilot 解释功能,帮助他们快速了解不熟悉的代码。

  • 起草评论:Copilot 可以根据最佳做法或团队指南生成评论,使反馈清晰且可作。

  • 在 IDE 中的评审:除了直接在 GitHub.com 上工作外,Copilot 还可以评审 IDE 中的代码。 这样,开发人员就可以在打开拉取请求之前捕获和解决问题,加快流程并减少返工。

了解 PRU 如何解锁高级审查功能

PRUs 为这些高级功能提供动力。 例如,将 Copilot 指定为 PR 审阅者时,每次发表评论都会使用一个 PRU。 与自定义 .github/copilot-instructions.md 文件结合使用时,PRU 支持的评审将与团队的规则保持一致,无论它们是否专注于可读性、安全性还是样式。

示例:

如果没有 Copilot,PR 可能会包含来自审阅者的模糊评论,例如“在此处修复安全问题”。 在 Copilot + PRUs 的帮助下,评审过程将变为:

“使用 exec() 引入了代码注入漏洞。 请考虑将其替换为 subprocess.run() 以更安全地执行命令。 下面是建议的补丁:

并且它提供内联代码修复。

Copilot 评审的五种不同的方式可帮助开发人员

接下来,我们将回顾 Copilot 评审如何帮助你更智能地工作:

  • 代码评审建议
  • 跨多种语言的 Copilot 审核
  • 在拉取请求中格式化数据
  • 编写有效的拉取请求摘要
  • 解释和审阅代码

在代码评审中使用 Copilot 建议

当你查看拉取请求时,你可能会发现可以改进但没有时间自行起草完美示例或代码片段的区域。 GitHub Copilot 有助于填补这个空白,而无需接管作者的工作。 在拉取请求“文件已更改”视图中,可以突出显示代码行或代码块,并要求 Copilot 建议改进或标记潜在问题。 然后,Copilot 会生成一个具体的上下文感知建议,你可以将其复制到评论评论中,使你的反馈更加清晰且更易于作者采取行动。

例如,在查看具有重复逻辑的 Ruby 文件时,可以突出显示相关行并询问:

“建议为此重复代码提供更干净的 Ruby 重构。”

Copilot 将提出遵循常见 Ruby 最佳做法的更新版本。 你可以将其建议(或部分内容)粘贴到审阅评论中,并附上你自己的说明。 这使你可以专注于整体质量和设计,同时仍然为作者提供可执行的高价值反馈,而不会模糊评审和代为编码之间的界限。

跨多种语言审查

请求代码评审时,Copilot 可以自动突出显示不遵循最佳做法或团队指南的区域

Copilot 将快速生成符合语言规范的改进,使你即使在主要专长领域之外,也能够提供更有力、更精准的评审反馈。

GitHub 拉取请求的屏幕截图,其中显示了一个代码建议,用于在 Go 程序中将变量声明替换为短变量声明。

为拉取请求设置数据格式

拉取请求在包含格式正确的上下文(如指标、屏幕截图或测试结果)时要清晰得多。 但是,团队通常会忘记一致地设置此内容的格式。 GitHub Copilot 可以在代码评审期间充当第二组眼睛,在拉取请求说明中自动标记格式不佳的表,并建议更简洁的版本,该版本符合公司的风格准则。

示例:开发人员使用以下页面加载时间表提交拉取请求。 很难阅读,并且不遵循团队的 Markdown 风格指南:

试运转 加载前时间 LoadTimeAfter
1.3 1.2
1.2 1.1
1.1 0.885
1.3 1.3
1.2 0.918
平均值 1.22 1.0806

在审查期间,Copilot 发布评论:

“此表不遵循存储库的 Markdown 准则。 下面是基于公司风格指南的精简版本。

它包括一个已更正的版本,可以粘贴到 PR 说明中:

试运转 之前的加载时间(秒) 更新后加载时间(秒)
1 1.3 1.2
2 1.2 1.1
3 1.1 0.885
4 1.3 1.3
5 1.2 0.918
Average 1.22 1.0806

审阅者只需单击一下即可接受 Copilot 的建议,确保 PR 遵循公司风格,而无需花费时间重新设置。

这表明 Copilot 担任自动审核员(而不是编码代理):它看到未格式化的表格,应用 .github/copilot-instructions.md 中的公司准则,并以内联方式提供更正后的版本。

编写有效的拉取请求摘要

编写 PR 说明通常是过程中的最后一步,可能感觉是障碍。 Copilot 让事情变得更简单。 在 PR 说明编辑器中,可以使用 Copilot 图标生成草稿摘要或大纲。 即使进行了编辑,使用一个结构良好的起点可以节省时间,并确保审核者获得所需的信息。

GitHub 拉取请求的屏幕截图,其中显示了包含 GitHub Copilot 选项的注释框,用于生成更改的摘要或大纲。

解释和查看代码

有时,你可能不熟悉拉取请求中的代码。 与其费力地钻研这些内容,不如请求 Copilot 解释这些变化。 在请求团队成员反馈之前,Copilot 还可以对自己的 PR 进行初始评审。 这有助于捕获较小的问题、验证最佳做法,并让你更有信心提交的质量。

你现在知道在代码评审方面,Copilot 能够做什么。 接下来,让我们了解如何直接在 GitHub.com 上使用 Copilot 评论。