本指南的灵感来自 GitHub 的工程系统成功 playbook (ESSP),其中推荐了推动工程系统改进的策略和指标。
如果你要启动 Copilot 的推出,我们建议定义目标、相应地规划推出,并向员工明确传达目标。 请参阅“使用 GitHub Copilot 实现公司工程目标”。
1.确定阻碍成功的因素
ESSP 建议的第一步是充分了解阻碍公司取得进步的障碍。 通过了解当前的基线、所需的未来状态以及阻碍进步的障碍,可确保更改具有针对性且有效。
在合并拉取请求时,团队通常会因审查周期冗长而遇到延迟。 这些延迟通常源于:
- 难以理解的复杂代码更改
- 使审查具有挑战性的不一致代码格式
- 代码更改普遍缺乏上下文
- 导致审查缓慢或难以解决的社会因素
审阅者还可能轻易忽视可能导致生产问题的细微错误。
这会导致开发流程出现瓶颈,拖慢整体交付速度并降低功能质量。
2.评估你的选项
下一步是评估并商定解决方案,以解决在第一步中确定的障碍。 在本指南中,我们将重点关注 GitHub Copilot 对已确定目标的影响。 请记住,新工具的成功推出还需要文化和流程的变更。
你将与试点小组一起试用新工具和流程,以收集反馈并衡量成功与否。 有关试用期间使用的培训资源和指标,可提前查看 3.实施变更和要监视的指标部分。
Copilot 如何提供帮助
GitHub Copilot 提供一套功能,它们旨在加速拉取请求审查过程、提高代码质量并提高协作,最终缩短合并时间。
通过利用 Copilot 的功能,团队可以简化工作流、减少摩擦并确保一致的高质量代码。
生成完整且有用的拉取请求摘要
Copilot 可以自动生成清晰简洁的拉取请求摘要,从而节省开发人员的时间,并确保审阅者能够轻松理解拉取请求的目的和更改。 这可减少误解的可能性,并加快审查流程。
在审查过程中协助审阅者
GitHub Copilot 可用作功能强大的拉取请求审查助手。
- Copilot 可以帮助解释复杂的代码更改,让审阅者能够更快地了解拉取请求正在参与的内容。
- Copilot 可以直接在 GitHub 的拉取请求审查界面内提供存储库范围、上下文感知的建议和潜在代码改进,帮助审阅者捕获潜在问题并更有效地提供建设性反馈。
- Copilot 可帮助审阅者起草和编写清晰、一致且有效的审查注释。
根据组织指南进行审查
- Copilot 可在你打开拉取请求前在 IDE 中审查代码更改,或者指定为拉取请求的审阅者。
- 借助规则集,你可以设置 Copilot,使其根据自定义标准系统化地审查拉取请求。
- 按照审查的编码指南(仅限 Copilot Enterprise),Copilot 可以强制实施组织编码标准和最佳做法,自动标记潜在的冲突和推荐修补程序。
这些功能可确保整个代码库的一致性,并帮助你在开发过程中尽早捕获错误,减少手动审查代码的需求,为开发人员和审阅者节省时间。
推荐代码修补程序
根据拉取请求审查注释,Copilot 可帮助拉取请求作者快速实现所需的代码更改来解决审查。
文化考量
在推出 GitHub Copilot 的同时,还应解决任何可能阻碍目标实现的社会或文化因素。
以下示例取自 ESSP 中的“反模式”部分。
- 团队可能存在发布周期过长的问题,导致一次性部署大批量代码。**** 这可能是由担心频繁发布导致不稳定性、CI/CD 管道成熟度不足或严格的合规性要求所致。
- 开发人员可能花太多时间来完善代码或添加不需要的功能。**** 这可能是完美主义文化或缺乏有效的优先级排序所致。
- 开发人员可能为简单的问题构建过度复杂的解决方案。**** 这可能是由于不必要的追求“面向未来”,或是为通过复杂性来增加价值而承受的压力所致。
3.在生产中
确定克服障碍的正确方法后,可缩放已确定的解决方案。 要成功推出新工具或新流程,请务必为推出的每个部分指定负责人、就目标进行透明沟通、提供有效的培训并衡量成果。
本部分为开发人员提供了示例场景、最佳做法和资源。 我们建议使用本部分来规划沟通和培训课程,以帮助员工以符合目标的方式使用 Copilot。****
创建有用的拉取请求摘要
- 创建拉取请求时,单击“Add a description”字段中的 Copilot 图标,然后单击“Summary”。****
- Copilot 将扫描拉取请求,并以自然语言概述所做更改,在项目符号列表中显示更改及其影响的文件。
- 确认你对 Copilot 的描述是否感到满意。
- 当审阅者处理你的拉取请求时,他们将拥有进行审查所需的一切上下文。
将 Copilot 用作审查助手
作为审阅者处理拉取请求时,你可以使用 Copilot 加快审查速度。
-
使用 Copilot 理解拉取请求中的更改。****
-
要求 Copilot 汇总对文件所做的更改,尤其适用于处理冗长的差异对比。 可以单击文件右上角的 ,从差异对比中选择特定文件。
-
对于特定行中的更改,突出显示你想要更好了解的行,并要求 Copilot 向你解释这些更改。 你可以先单击起始行号,按住 Shift 键,然后单击差异对比的结束行号来突出显示一组行。
-
-
使用 Copilot 协作处理拉取请求审查。**** 在提示 Copilot 之前,不要忘记将特定的文件差异对比附加到对话中。
-
可通过提出以下问题,让 Copilot 对拉取请求更改给出评估意见:
Provide your judgement as a PR Reviewer, both for functional and non-functional aspects that these changes bring
。 请注意,该提示要求 Copilot 同时考虑代码的功能和非功能方面。 -
对于你自己的拉取请求审查注释,请要求 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 中于拉取请求上进行。
即使使用 Copilot 代码评审,也需要人工代码评审。 不过,执行上述步骤可帮助提高人工审查速度。
- 在打开拉取请求之前,开发人员应请求使用 Copilot 代码评审来审查其所有更改。****
- 管理员应设置存储库或组织规则集,以将 Copilot 自动添加为审阅者来审查任何面向受保护分支的拉取请求。****
- 团队主管应提炼其团队的标准风格和规则,并将其设定为组织的编码指南,以便 Copilot 可在审查中利用它们。****
- 请确保编码指南包含至少一套提高代码可读性的样式建议,这将在拉取请求审查流程中提供帮助。
- 为了减少因样式问题而导致的拉取请求审查注释量,请在存储库和组织级别的 Copilot 说明中设置相同的建议。 这样,Copilot 生成的代码将遵循这些指南。
在实施审查注释时获取帮助
拉取请求作者可在 Copilot 的帮助下快速实施修补程序,加速解决拉取请求审查注释。
- 对于 Copilot 本身留下的任何审查注释,请直接提交建议的修补程序,或者在提交之前,在 Copilot 工作区中进行编辑。
- 对于同事留下的任何审查注释,请导航到与拉取请求审查注释相关的文件差异对比,并将差异对比附加到 Copilot 对话助手 对话中。 然后,复制粘贴带有如下所示提示的审查注释:
Suggest a fix for this review comment:
- 如果使用的是 VS Code,请在代理模式下要求 GitHub Copilot 实现审查注释中要求的更改。
适用于开发人员的最佳做法
开发人员应该:****
- 在推送之前,在 IDE 中请求 Copilot 审查以尽早捕获和解决问题。
- 使用 Copilot 规划和优化自己的拉取请求审查注释,帮助拉取请求作者了解和解决问题。
- 将相关的差异对比上下文(包括特定代码行)附加到与 Copilot 的对话中。
开发人员不得:****
- 在未测试的情况下应用 Copilot 的建议。
- 只依靠 Copilot 进行审查。
- 忽视代码的可读性。
资源
- 使用 GitHub Copilot 创建拉取请求摘要
- 使用 GitHub Copilot 代码评审
- 为 GitHub Copilot 代码评审配置编码准则
- 配置 Copilot 的自动代码评审
- 为 GitHub Copilot 添加组织自定义指令
要监视的指标
若要评估新工具的试用情况,并确保全面推出后提供一致的改进,应监视结果并在需要时进行调整。 一般来说,建议考虑质量、速度和开发人员满意度这三大关键领域,并评估这些领域如何协同作用,共同推动业务成果的实现。****
下面是为评估 Copilot 对该特定目标的影响而建议查看的一些指标。
- 开发人员满意度:通过开发人员调查来衡量对工程工具的满意度。
- 每个开发人员合并的拉取请求:可以使用 GitHub 的
pull request
Webhook,确保action
是closed
,而pull request
对象中的merged
为true
。 - 拉取请求提前期:衡量从创建拉取请求到合并之间的平均时长。