本指南受 GitHub 的 工程系统成功手册(ESSP)启发,手册建议用于推动工程系统改进的策略和指标。
如果您正准备在公司推广 Copilot,我们建议先定义目标,相应地规划推广计划,并向员工清晰传达目标。请参阅 使用 GitHub Copilot 实现公司工程目标。
1. 确定成功的障碍
ESSP 推荐的第一步是清晰了解阻碍公司改进的障碍。通过了解您当前的基准、期望的未来状态以及阻止进展的障碍,您可以确保变更具针对性且有效。
团队经常因冗长的审查周期而导致合并拉取请求的延迟。这些延迟通常源于
- 难以理解的复杂代码变更
- 不一致的代码格式导致审查困难
- 对变更提供的上下文普遍不足
- 导致审查缓慢或难以处理的社交因素
审阅者也可能轻易遗漏小错误,从而导致生产问题。
这会在开发流程中形成瓶颈,减慢功能的整体交付速度和质量。
2. 评估您的选项
下一步是评估并确定解决第一步中识别的障碍的方案。在本指南中,我们将聚焦于 GitHub Copilot 对您已确定目标的影响。成功推广新工具还需要文化和流程的变更。
在试点小组中对新工具和流程进行试验,以收集反馈并衡量成功。有关培训资源和试验期间使用的指标,请参阅 3. 实施变更 与 需要关注的指标 部分。
Copilot 如何提供帮助
GitHub Copilot 提供一套功能,旨在加速拉取请求审查过程、提升代码质量并改善协作,最终实现更快的合并时间。
通过利用 Copilot 的能力,团队可以简化工作流、降低摩擦,并确保代码的一致性和高质量。
生成完整且有帮助的 PR 摘要
Copilot 可以自动生成清晰简明的 PR 摘要,节省开发者时间并确保审阅者能够轻松理解 PR 的目的和变更。这降低了误解的可能性并加快审查过程。
在审查过程中帮助审阅者
GitHub Copilot 可用作强大的 PR 审查伴侣。
- Copilot 能帮助解释复杂的代码变更,使审阅者更快理解 PR 所贡献的内容。
- Copilot 可以在 GitHub 的拉取请求审查界面中直接提供全仓库、上下文感知的建议和潜在代码改进,帮助审阅者更高效地发现潜在问题并提供建设性反馈。
- Copilot 能帮助审阅者起草并撰写清晰、一致且有效的审查意见。
基于组织指南的审查
- Copilot 可以在打开拉取请求前于你的 IDE 中审查代码变更,或被指派为拉取请求的审阅者。
- 通过规则集,你可以配置 Copilot 根据自定义标准系统性地审查拉取请求。
- 使用自定义审查指令,Copilot 可以强制执行组织的编码标准和最佳实践,自动标记潜在违规并提供修复建议。
这些功能确保代码库的一致性,帮助你在开发早期捕获错误,减少人工代码审查的需求,为开发者和审阅者节省时间。
建议代码修复
基于拉取请求的审查评论,Copilot 可以帮助作者快速实现所需的代码更改,以解决审查问题。
文化考虑
在推广 GitHub Copilot 的同时,需解决可能阻碍实现目标的任何社交或文化因素。
以下示例摘自 ESSP 中的“反模式”章节。
- 团队可能会等待过久才发布,一次性部署大量代码。这可能源于对频繁发布导致不稳定的担忧、CI/CD 流水线不成熟或严格的合规要求。
- 开发者可能会花费过长时间打磨代码或加入不必要的功能。这可能是由于完美主义文化或缺乏有效的优先级划分。
- 开发者可能会为简单问题构建过于复杂的解决方案。这可能是因为不必要的面向未来的需求,或是通过复杂性来增加价值的压力。
3. 实施变更
当您确定了解决障碍的正确方法后,就可以扩大这些方案的规模。要成功推广新工具或流程,请为每个环节指定负责人,透明沟通目标,提供有效培训,并衡量结果。
本节提供示例情景、最佳实践和面向开发者的资源。请利用本节 规划沟通和培训会议,帮助员工以符合您目标的方式使用 Copilot。
创建有帮助的拉取请求摘要
- 创建拉取请求时,点击 “Add a description”(添加描述)字段中的 Copilot 图标,然后点击 Summary(摘要)。
- Copilot 将扫描整个拉取请求,提供对所做更改的文字概述,以及包含受影响文件的要点列表。
- 检查你是否满意 Copilot 的描述。
- 当审阅者打开你的拉取请求时,他们将拥有所有进行审查所需的上下文。
将 Copilot 用作审查助手
作为审阅者进入拉取请求时,你可以使用 Copilot 加快审查速度。
-
使用 Copilot 了解拉取请求中的更改。
-
请 Copilot 概括对某个文件所做的更改,这在处理较长的差异时特别有用。你可以点击文件右上角的区域进行选择。

-
若要查看特定行的更改,先选中想要更好理解的行,然后请 Copilot 为你解释这些更改。你可以先点击最上方的行号,按住 SHIFT 键,再点击差异中的最下方行号,以此选中一段行。

-
-
与 Copilot 合作进行 PR 审查。在向 Copilot 发出提示前,别忘了将具体的文件差异附加到对话中。
-
你可以这样询问 Copilot 对 PR 更改的看法:
Provide your judgement as a PR Reviewer, both for functional and non-functional aspects that these changes bring。请注意,这个提示要求 Copilot 同时考虑代码的功能性和非功能性方面。 -
针对你自己的 PR 审查评论,可请 Copilot 提供第二意见:
As my peer reviewer on this pull request, give me your feedback on my own review: YOUR-REVIEW-COMMENT. Do you think it's pertinent? Am I missing something?
-
-
与 Copilot 合作起草并完善你的审查评论。
- 在与 Copilot 规划审查后,你可以请求列出需要提供的评论:
Make a list of review comments to add to the PR and tell me exactly in which file diff and lines each comment should be added。 - 你也可以请 Copilot 为你构思的审查评论生成初稿,或在发布前对评论进行润色:
Help me draft review comments as discussed或Refine this review comment to make it clear, concise, and actionable。
- 在与 Copilot 规划审查后,你可以请求列出需要提供的评论:
将 Copilot 添加为审阅者
为了缩短审查时间并更快合并拉取请求,请系统性地使用 Copilot 代码审查:先在 IDE 中审查再打开拉取请求,随后在 GitHub 上的 PR 中进行审查。
使用 Copilot 代码审查并不取代人工代码审查。但遵循上述步骤可以帮助人工审查更快完成。
- 开发者应在打开拉取请求前使用 Copilot 代码审查对所有变更进行审查。
- 管理员应设置仓库或组织的规则集,以在任何针对受保护分支的拉取请求中自动将 Copilot 添加为审阅者。
- 团队负责人应收集团队的标准风格和规则,并将其设为组织的自定义指令,以便 Copilot 在审查时加以利用。
- 确保你的自定义指令包含一套最基本的代码风格建议,以提升代码可读性,这将在拉取请求审查过程中提供帮助。
- 为减少因代码风格问题产生的 PR 审查评论,请在仓库和组织层面的 Copilot 指令中设定相同的建议。这样,Copilot 生成的代码将遵循这些规范。
获取实现审查评论的帮助
拉取请求作者可以通过 Copilot 的帮助快速实现修复,从而加速解决 PR 审查评论。
- 对于 Copilot 本身留下的审查评论,可直接提交其建议的修复,或在 Copilot Workspace 中编辑后再提交。
- 对于同伴留下的审查评论,先定位到与该评论相关的文件差异,并将该差异附加到 Copilot Chat 对话中。随后,将审查评论复制粘贴并使用如下提示:
Suggest a fix for this review comment: - 如果你使用 VS Code,请以代理模式让 GitHub Copilot 实现审查评论中要求的更改。
开发者最佳实践
开发者 应当
- 在推送代码前于 IDE 中请求 Copilot 审查,以便提前捕获并解决问题。
- 使用 Copilot 规划并完善自己的 PR 审查评论,帮助 PR 作者理解并解决问题。
- 在与你的 Copilot 对话中附上相关的差异上下文,包括具体的代码行。
开发者 不应
- 在未进行测试的情况下直接采用 Copilot 的建议。
- 仅依赖 Copilot 进行审查。
- 忽视代码可读性。
资源
- 使用 GitHub Copilot 创建拉取请求摘要
- 使用 GitHub Copilot 代码审查
- 为 GitHub Copilot 添加仓库自定义指令
- 配置 GitHub Copilot 自动代码审查
- 为 GitHub Copilot 添加组织自定义指令
需要关注的指标
为评估新工具的试点并确保全面推广带来持续改进,请监控结果并在需要时进行调整。我们建议关注 质量、交付速度和开发者满意度 三大维度,以及它们如何共同推动业务成果。
以下是评估 Copilot 对该特定目标影响的部分指标。
- 开发者满意度:使用开发者调查来衡量对工程工具的满意度。
- 每位开发者合并的拉取请求数:你可以使用
pull requestwebhook,确保action为closed,且pull request对象中的merged属性为true。 - 拉取请求交付周期:衡量 PR 创建到合并之间的平均时间长度。
- 拉取请求缺陷泄漏率:衡量因审查不充分的 PR 导致的部署问题比例。
- 拉取请求审查评论类型:下载 PR 审查评论,使用基于 AI 的主题分类进行归类,并跟踪人工审阅者在设计、可扩展性和策略方面的评论。