自 GitHub Copilot 向公众发布以来的两年里,AI 从根本上改变了软件开发,这具有里程碑式的意义。
在两年来,GitHub Copilot 帮助开发人员的编码速度提高了 55%。之前的研究还表明,85% 的开发人员对他们的代码更有信心,88% 的开发人员对使用 GitHub Copilot 的流程更有信心。
但仍然有个问题争论不休:客观上,使用 GitHub Copilot 编写的代码质量是好是坏?
为了回答这个问题,官方研究员进行了一项随机对照试验,以了解使用 GitHub Copilot 编写的代码,在功能、可读性、可靠性、可维护性、简洁性和可能获得批准
等方面的程度。
在这项研究中,官方招募了 202 名具有至少 5 年经验的开发人员。一半被随机分配了 GitHub Copilot 访问权限,另一半被指示不要使用任何 AI 工具。
所有参与者都被要求完成一项编码任务,为 Web 服务器编写 API 端点。然后,通过单元测试和开发人员进行的专家评审来评估代码。
研究结果表明,使用 GitHub Copilot 编写的代码具有增强的功能和可读性,质量更好,并且获得批准率更高。
增强功能
如果代码不起作用,就不能说它是高质量的代码。因此,我们通过分析代码通过了多少单元测试来衡量它的功能和质量。
我们发现,使用 GitHub Copilot 编写的代码通过的测试要多得多 (p=0.002)。事实上,具有 GitHub Copilot 访问权限的开发人员通过研究中的所有 10 个单元测试的可能性要高出 56% (p=0.04)。
这意味着使用 GitHub Copilot 可以帮助开发人员编写功能更强大的代码。
提高可读性
编写代码并通过前述所有 10 个单元测试的开发人员被随机分配对匿名提交的内容进行盲审,包括使用和不使用 GitHub Copilot 编写的代码。
审阅者发现,使用 GitHub Copilot 编写的代码具有较少的代码可读性错误。
我这是对开发人员逐行代码审查的分析的结果:
代码错误的平均值 | 平均代码行数 | 每个错误代码的平均行数 | 差异 | |
---|---|---|---|---|
使用GitHub Copilot | 4.63 | 84.3 | 18.2 | 13.6 |
不使用GitHub Copilot | 5.35 | 85.7 | 16.0 | -11.9% |
这使开发人员在使用GitHub Copilt后,平均可以多编写 13.6% 的代码行数,而不会遇到可读性问题。
这可以转化为实时节省,因为代码中的每一个错误都需要开发人员采取行动。也就说,如果不使用 GitHub Copilot的情况下,团队可能会面临多达 13% 的评论或建议需要解决,这些评论或建议会随着时间的推移而累积,花费的时间成本会更多。
总体上更好的代码质量
开发人员发现的差异不仅限于每行代码的错误。使用 GitHub Copilot 编写的代码和未使用GitHub Copilot编写的代码在可读性、可靠性、可维护和简洁性也有些许的差异。
因变量 | 平均差值 | P值 |
---|---|---|
可读性 | 3.62% | 0.003 |
可靠性 | 2.94% | 0.01 |
可维护性 | 2.47% | 0.041 |
简明程度 | 4.16% | 0.002 |
虽然差异比较少,但它们在统计上具有显著性,并且确实有助于更好的代码库。
更高的批准率
研究还发现,开发人员批准使用 GitHub Copilot 编写的代码的可能性也高出 5%。
在实际设置中,这意味着使用 GitHub Copilot 的开发人员编写的代码可以更快地合并,这将加快修复错误或部署新功能的时间。
那么,上述研究数据对 GitHub Copilot 如何提高代码质量有何看法呢?
虽然使用 GitHub Copilot 组的提交数量和代码行更改量明显更高,但平均提交大小略小。这表明 GitHub Copilot 使开发人员能够迭代代码以提高其质量。
假设,开发人员无论如何都要花费较少的时间使他们编写的代码正常运行(即我们假设使用或不使用GitHub Copilot编写的代码都需要开发人员花费时间来使代码正常运行),那么,使用GitHub Copilot能编写出更多准确的代码,这为开发者节省了更多的时间,从而能够更专注于改进代码的质量。
GitHub Copilot编写的代码在可读性、可靠性、可维护和简洁性上的优越性,能给开发者带来更多的信心,使开发者能更轻松的进行迭代,而不必担心导致代码错误。
参阅:GitHub Copilot 是否能提高代码质量?数据如下 - The GitHub Blog --- Does GitHub Copilot improve code quality? Here’s what the data says - The GitHub Blog
以下是官方的结论:
作为第一项检查 GitHub Copilot 对代码质量影响的对照研究,它表明 GitHub Copilot 有助于编写高质量的代码。我们假设其他研究可能没有发现 GitHub Copilot 的代码质量有所提高,不是因为该工具本身,而是因为开发人员可能缺乏关注质量的机会或动力。这些数据建立在我们之前的研究基础上,表明 GitHub Copilot 是一款功能强大的产品,可以帮助开发人员更快地编写代码并提高工作满意度,并使团队能够快速行动并增强他们的创造力和创新能力。
这里,非常感谢 Lizzie Redford 博士和 Sida Peng 博士对本研究的研究设计和统计分析的支持。