社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

技术速递|如何利用 GitHub Copilot 提升代码审查与拉取请求的质量

dotNET跨平台 • 1 年前 • 510 次点击  

M

点击蓝字 / 微软开发者MSDN

关注我们

作者:Melissa Pastore

翻译/排版:Alan Wang


通过工程团队提供的真实提示、示例和工作流技巧,探索 GitHub Copilot 如何高效简化代码审查、拉取请求及日常工程任务。

自从将近三年前加入 GitHub,担任计费团队的软件工程师以来,我一直近距离见证着包括 GitHub Copilot 在内的 AI 编码工具的发展历程。它最初只是代码补全功能,如今已经演变出更多能力,包括智能化工作流重构建议。刚开始使用 Copilot 时,我主要是在 VS Code 中使用它。随着 Copilot 的不断发展与扩展,我的使用场景也早已不再局限于代码编辑器,而是延伸到了日常工作的各个环节,包括拉取请求、代码审查等。


如今,GitHub Copilot 已经覆盖了整个软件开发生命周期,其中一个极具价值的场景,就是在创建拉取请求和进行代码审查时。在 GitHub 工作期间,我发现了一些切实可行的方法,可以让 Copilot 在拉取请求和代码审查过程中发挥重要作用。以下是我实践中养成的一些习惯,它们显著提升了我的工作流顺畅度和效率。


GitHub Copilot 

https://github.com/features/copilot

智能化工作流

https://github.blog/news-insights/product-news/from-pair-to-peer-programmer-our-vision-for-agentic-workflows-in-github-copilot/https://github.blog/news-insights/product-news/from-pair-to-peer-programmer-our-vision-for-agentic-workflows-in-github-copilot/

重构建议

https://github.blog/ai-and-ml/github-copilot/github-for-beginners-code-review-and-refactoring-with-github-copilot

代码审查

https://github.blog/developer-skills/github/how-to-review-code-effectively-a-github-staff-engineers-philosophy/

在进行代码审查时使用 Copilot 建议

当我在审查同事的拉取请求时,常常会想到他们的代码可以如何改进,或者想确认代码是否遵循了最佳实践。然而,我并不总有时间亲自编写重构后的代码。遇到这种情况时,我通常会点击正在审查文件旁的 Copilot 图标,让 Copilot 针对我当前审查的代码行提出一个具体的改进建议。然后,我会将这个建议附上我认为该建议能改进代码的原因,一并写进审查评论中。


最近,在审查一位同事的代码时,我注意到一个 Ruby 文件中存在一些重复代码。我点击了相关代码旁的 Copilot 图标,并向它输入了这样的提示:

> “Can you refactor this Ruby on Rails code to reduce repetition?”

Copilot 给出的建议与我原本会写的代码几乎一致,为我节省了好几分钟时间,让我能够将精力更多地放在更高层次的反馈上。


由于我经常需要在不同的上下文中切换,并审查多种语言的代码,如 Ruby、TypeScript 和 Go,有时我需要回顾一下每种语言的最佳实践。最近,我就在审查一段 Go 代码时使用了这样的提示:

> “Is this code addition following Go best practices for variable assignment? If not, can you suggest improvements?”

Copilot 很快生成了一个建议,我在审查后将其作为代码审查评论的一部分使用。这样不仅节省了时间,也让我的反馈更具可操作性。

为拉取请求格式化表格和数据

我喜欢在拉取请求的描述中添加图片、屏幕录制,有时还会加上电子表格,以提供更多背景信息,帮助审查人员更好地理解我的修改。但在 Markdown 中添加这些信息可能会非常繁琐!遇到这种情况时,我会让 Copilot 帮我完成格式化工作。


最近,我在做一些改进,以减少某个 React 页面加载时间,并希望展示这些改进带来的效果。我一直在用电子表格记录修改前后的页面加载时间,并打算把它放进拉取请求的描述中,于是我给 Copilot 输入了这样的提示:

Format this data into a GitHub flavored markdown table that I can paste into a GitHub pull request description:   
Load Time Before (in seconds)  Load Time After Updates (in seconds)  1.3  1.2  1.2  1.1  1.1  0.885  1.3  1.3  1.2  0.918    Average  1.22  1.0806

Copilot 给出了如下响应:

Here’s your data formatted as a GitHub-flavored markdown table, ready to paste into a pull request description:Markdown| Test Run | Load Time Before (seconds) | Load Time After Updates (seconds) ||----------|---------------------------|-----------------------------------|| 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**                         
Let me know if you’d like any adjustments!

这个小技巧让我在拉取请求的描述和评论中更轻松地清晰分享数据。

让 Copilot 帮助撰写拉取请求摘要

我经常使用 Copilot 来辅助撰写拉取请求摘要。我们都有过这样的经历:修复了一个 bug 或新增了一个功能,终于打开了拉取请求,最后一道关卡却是写拉取请求的描述。Copilot 可以通过拉取请求描述编辑栏中的 Copilot 图标,帮助你快速启动这一过程。即使最后我会对文本进行修改,有了一个起点,写起来也不会那么令人畏惧。


辅助撰写拉取请求摘要

https://docs.github.com/en/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot

利用 Copilot 进行代码审查和理解陌生代码

Copilot 非常擅长代码审查和解释,我日常工作中主要有两种使用方式:请求 Copilot 做初步代码审查,以及向 Copilot 询问不熟悉的代码。


在我将拉取请求标记为“准备好审查”之前,通常会先请求 Copilot 对我的改动做一次快速审查。它经常能发现我可能忽略的问题,或提出更优的写法建议。同时,别忘了在代码库的自定义指令中添加一些说明,告诉 Copilot 在审查拉取请求时应该重点关注哪些内容。


当我在审查他人代码时,如果遇到不理解的改动,我会请 Copilot 进行解释。这有助于我快速获取上下文,尤其是在对代码库该部分不太熟悉时。对代码的更深入理解,使我能够为团队成员提供更细致、更有深度的代码审查,也确保我完全理解每个拉取请求可能带来的影响,从而做出更明智的审批决策。


请求 Copilot 对我的改动做一次快速审查

https://docs.github.com/en/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review

代码库的自定义指令

https://docs.github.com/en/copilot/how-tos/agents/copilot-code-review/using-copilot-code-review#customizing-copilots-reviews-with-custom-instructions

Copilot 对代码审查和拉取请求的影响

虽然 Copilot 不能替代细致入微、积极参与的代码审查,但它已经成为我作为软件工程师日常工作中不可或缺的工具。从生成智能建议和代码重构,到快速的 Markdown 格式化和拉取请求摘要撰写,Copilot 帮助简化了编写代码之外的工作,使反馈更具可操作性,代码审查过程更快且更全面。通过将 Copilot 融入软件开发生命周期的每个阶段,我得以专注于更高层次的工程问题和团队协作。随着 Copilot 不断进化,我期待它不仅继续改变我的工作流程,更将革新全球开发者的协作方式。


开始使用 GitHub Copilot >


GitHub Copilot

https://github.com/features/copilot


微信公众号|微软开发者MSDN

新浪微博|微软中国MSDN

·END·

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/185717