今天,我们发布了关于GitHub Copilot聊天。通过使用自然语言的力量,我们研究中的开发人员使用GitHub Copilot Chat获取实时指导、提示、故障排除、补救和针对其特定编码挑战定制的解决方案,所有这些都是实时的,而无需离开IDE。
我们的研究发现,启用GitHub Copilot Chat后,编写和审查的代码质量全面提高尽管之前没有开发人员使用过该功能。
- 85%的开发人员在使用GitHub Copilot和GitHubCopilotChat编写代码时,对自己的代码质量更有信心。
- 通过GitHub Copilot Chat,代码审查更具可操作性,完成速度提高15%。
- 88%的开发人员报告称,使用GitHub Copilot Chat维护流状态是因为他们更专注、更少沮丧,也更喜欢编码。
![三个饼图详细说明了使用GitHub Copilot Chat与更好的代码质量的关系](https://github.blog/wp-content/uploads/2023/10/1920x1080-4.png?w=1024&resize=1024%2C576)
去年,我们的研究发现,开发人员使用GitHub Copilot代码速度提高55%但快速工作只是其中一部分——在许多情况下,传统上在快速做事和正确做事之间存在权衡。随着人工智能继续为越来越多的开发人员编写代码,确保良好的代码质量变得更加重要。
高质量代码是什么样子的?
为了衡量代码质量,我们开发了一个由GitHub内部使用的五个指标组成的量规,但这也符合学术标准和工业标准。参与者使用这些指标来区分强代码和慢代码。
可读的
代码是否遵循语言的习惯用法和命名模式?难以阅读的代码使维护、改进和记录变得更加困难。
可重复使用的
编写代码是为了重用吗?代码重用是开发人员协作的基石。它节省了时间和精力,打破了筒仓,并创造了整体一致性。
简洁的
代码是否符合DRY(不要重复)?代码的重复性越低,就越容易阅读、理解和构建。复杂的代码可能会导致难以修复的错误和问题。
可维护
代码的编写方式是否使功能清晰、透明并与手头的问题相关?良好维护的代码意味着开发人员可以最小化依赖性。可维护代码也会影响开发人员搜索和实践代码重用的能力。
有弹性的
代码是否预测并处理错误?如果出现错误,弹性代码将保持其功能(或至少具有最小的中断)。这大大有助于确保代码能够正常工作。
使用GitHub Copilot可以获得更好的代码质量
在这项研究中,我们调查了GitHub Copilot及其chatbot功能是否会提高所生成代码的感知质量,减少代码审查所需的时间,并生成通过单元测试的代码。从各个方面来看,开发人员都觉得在使用GitHub Copilot时他们的编码得到了改进。
85%的开发人员在使用GitHub Copilot和CopilotChat编写代码时,对自己的代码质量更有信心
GitHub Copilot Chat是一个聊天界面,允许您与GitHup Copilots交互,直接在受支持的IDE中询问和接收与编码相关的问题的答案。聊天界面提供了对编码信息的访问和支持,而无需浏览文档或搜索在线论坛。Visual Studio代码和Visual Studio当前支持Copilot Chat。 以下是如何启用GitHub Copilot Chat. |
总的来说,开发人员告诉我们,与不使用GitHub Copilot和GitHub-Copilot-Chat的情况相比,使用GitHub Copilit-Chat进行编码更容易、更无错误、更可读、更可重用、更简洁、更可维护、更具弹性,因此他们感到更有信心。
![图表显示了参与者对GitHub Copilot Chat如何影响编写和审查代码的评分,衡量了沮丧程度、关注度、乐趣、信心、时间研究和重复任务的时间](https://github.blog/wp-content/uploads/2023/10/1920x1080-3.png?w=1024&resize=1024%2C576)
代码非常干净,我只需查看代码,知道发生了什么,然后很容易地将其提交给我的代码库。所以,我觉得代码质量非常干净,也很容易理解。当我使用Copilot进行pull请求审查时,我看到它在生成正确的错误处理代码方面有多棒。
-财富500强公司高级软件工程师(研究参与者)
与没有GitHub Copilot Chat的情况相比,代码审查更具可操作性,完成速度快15%(这也是第一次用户!)
这是我们讨论质量和速度的部分,因为是的,两者都有可能。
开发人员指出,使用GitHub Copilot Chat进行代码审查可以提高代码的质量(与不使用它进行代码审查相比)。使用GitHub Copilot Chat,这些代码审查速度提高了15%。接受评论的比例也更高。事实上,近70%的参与者使用GitHub Copilot Chat接受了评论员的评论。
这些结果显示了GitHub Copilot Chat对协作的影响,并强调了在大型组织中跨大型工程团队扩展它的潜在影响。减少拉请求和代码评审所花费的时间意味着开发人员可以专注于更高优先级的更改。而且从一开始就有更好的质量代码可以确保代码以后不需要回滚,也不需要额外的测试。
我收到的一条更具可操作性的评论与我对代码的概念性理解有关——我希望其他开发人员能够理解我在做什么,所以这是一条很好的反馈。
-软件工程师(研究参与者)
![条形图显示了使用和不使用GitHub Copilot Chat查看代码的平均评分,衡量代码是否易于编写、无错误、可读、可重用、简洁、可维护、弹性和可操作](https://github.blog/wp-content/uploads/2023/10/1920x1080-1.png?w=1024&resize=1024%2C576)
88%的开发人员表示使用GitHub Copilot Chat维护流状态是因为他们更专注、更少沮丧,也更喜欢编码
去年的研究发现60-75%的开发人员使用GitHub Copilot据报道,他们对自己的工作更有满足感,在编码时不那么沮丧,更容易专注于更令人满意的工作。在今年的研究中,88%的参与者同样感到不那么沮丧、更专注。一个原因是,留在IDE意味着更少的搜索时间和更多的时间停留在令人垂涎的集中流状态。
因为我有十多年的行业经验,我通常喜欢用记事本或简单的平台进行编码,Copilot Chat是一个非常有用的工具,可以检查基本的东西,而无需我去谷歌或Stack Overflow。Copilot有一个非常简洁的语法版本。
-高级系统验证工程师(研究参与者)
我们如何开展研究
在这项研究中,目标是模拟在受控环境中编写代码的过程,审查代码,并在代码审查中纳入建议的更改。因此,每个参与者都被要求编写代码、审查代码,然后审查代码审查的建议并合并更改。
我们招募了36名具有5至10年软件开发经验的参与者。在这项研究中,参与者使用和不使用GitHub Copilot Chat编写并审查了代码。(参与者有一些使用GitHub Copilot的经验,但没有使用GitHub Copilit聊天的经验。)
参与者被要求为创建、读取和删除对象的HTTP服务编写API端点。他们被随机分配使用GitHub Copilot Chat创建、读取和删除API端点。在使用GitHub Copilot Chat之前,向开发人员展示了其功能的简短视频。参与者为他们在创建API端点上的工作创建了一个拉请求,为读取和删除部分创建了另一个拉请求。
在为API端点编写代码后,参与者比较了使用GitHub Copilot Chat对他们编写的代码质量的影响。具体来说,他们被问及任务是否更容易完成;如果代码的错误更少;它更具可读性、可重用性、简洁性、可维护性和弹性。
会议结束后,开发人员被分配了另一名参与者编写的两个拉请求。研究参与者对使用或不使用Copilot编写的拉动请求一无所知,但被要求对其进行审查,并就如何改进代码提出建议。然后,他们对使用和不使用GitHub Copilot Chat进行审查的过程进行了评分。然后,审查人员使用上述准则对代码的质量进行评级,以衡量代码是否可读、可重用和架构良好。
在他们的代码被另一个参与者审阅后,最初编写代码的参与者审阅了他们的pull请求的注释,以确定哪些有助于提高代码质量,以及注释的可操作性如何。再一次,这些参与者对Copilot Chat审查了哪些pull和哪些没有审查的pull一无所知。
GitHub Copilot Chat的承诺:代码质量更好,速度更快
我们知道快速做事和做好做事是有区别的。使用GitHub Copilot Chat,您可以同时拥有这两种功能。
我们构建了GitHub Copilot和GitHub Copilit Chat,通过帮助开发人员集中精力,让他们保持流畅,并让他们在工作中找到更多乐趣,从而改善他们的生活。结果表明,这些人工智能工具正在这样做,我们期待着构建下一步。
致谢
我们非常感谢所有参与这项研究的开发人员,我们一直很喜欢听到我们如何让GitHub为您做得更好!GitHub客户研究在来自GitHub下一步.