分析了 1.5 亿行代码发现:AI 编程助手降低代码质量
↓推荐关注↓
摘要
GitHub: “使用 AI 编程,提升效率 55%,增加代码量 46%,为 GDP 贡献 1.5 万亿美元”
AI 生成代码存在的问题
频繁收到增加代码的建议,却很少有关于更新、移动或删除代码的建议。这是源于文本环境中代码编写时的界面限制。
评估代码建议可能耗费大量时间,尤其是在有多个自动建议系统相互竞争的环境中,如流行的 JetBrains IDEs(参见 [11])。
代码建议的优化并非基于和代码维护者相同的激励机制。代码建议算法旨在提出最可能被接受的建议,而代码维护者则努力减少需要阅读的代码量(即,理解如何调整现有系统)。
代码变更的分类
新增代码。指新增加的独立代码行,不包含对现有代码的小幅修改(这类修改被标记为 “更新”)。此外,新增代码也不包括那些被添加、删除后又重新加入的代码行(这些行被标记为 “更新” 和 “变动”)。
删除代码。指被移除、提交并且在随后的至少两周内没有被重新加入的代码行。
移动代码。指被剪切并粘贴到新文件或同一文件中新的函数位置的代码行。按照定义,“移动” 的操作中,提交时代码内容不变,除了代码前的空格部分可能会有所改变。
更新代码。基于已存在的代码行,通过修改大约三个词或更少的词汇来提交的新代码行。
查找 / 替换代码。这种变更模式中,同一字符串在三个或更多位置被替换为统一的新内容。
复制 / 粘贴代码。除了编程语言的关键字(例如,
end
,}
,[
)外,相同的代码内容被提交到一个提交中的多个文件或函数。无效操作代码。微小的代码更改,如空格或同一代码块内的行号变更。这类无效操作的代码变更没有包含在本研究中。
Copilot 对代码编辑操作趋势的影响
新增 | 删除 | 更新 | 移动 | 复制 / 粘贴 | 查找 / 替换 | 代码波动 | |
---|---|---|---|---|---|---|---|
2020 | 39.2% | 19.5% | 5.2% | 25.0% | 8.3% | 2.9% | 3.3% |
2021 | 39.5% | 19.0% | 5.0% | 24.8% | 8.4% | 3.4% | 3.6% |
2022 | 41.0% | 20.2% | 5.2% | 20.5% | 9.4% | 3.7% | 4.0% |
2023 | 42.3% | 21.1% | 5.5% | 16.9% | 10.5% | 3.6% | 5.5% |
2024 | 43.6% | 22.1% | 5.8% | 13.4% | 11.6% | 3.6% | 7.1% |
操作 | 同比变化 |
---|---|
添加 | +3.1% |
删除 | +4.8% |
更新 | +5.2% |
移动 | -17.3% |
复制 / 粘贴 | +11.3% |
查找 / 替换 | -1.3% |
代码变动率 (Churn) | +39.2% |
解读代码操作变化的含义
代码变动率的显著增长
代码移动越少意味着重构和复用的减少
复制 / 粘贴的代码会导致未来的维护困难
修订代码年龄趋势分析
年份 | 少于 2 周 | 少于一个月 | 少于一年 | 1-2 年 |
---|---|---|---|---|
2020 | 65.9% | 8.7% | 21.8% | 3.6% |
2021 | 66.7% | 9.0% | 20.5% | 3.8% |
2022 | 64.7% | 9.9% | 21.1% | 4.4% |
2023 | 71.3% | 9.3% | 16.4% | 3.0% |
2024 | 74.4% | 9.1% | 14.1% | 2.4% |
解读代码年龄的趋势
后续研究的思考题
结论:开发者为何保持谨慎?
代码复用比例是否在下降?
代码的移动和复制 / 粘贴量是否有所变化?
开发者发现代码复用机会的难易程度如何?
引用
探索 AI 驱动的开发者生命周期带来的经济效益:GitHub Copilot 的案例分析 [GitHub]
GitHub Copilot for Business:企业级智能编程助手 [GitHub]
软件开发领域的重大变革:AI 驱动下的开发者生命周期经济与生产力分析 [GitHub]
深入了解 Diff Delta 和 Commit 组 [GitClear]
Techreport 调查显示:超过七成团队采用敏捷开发模式 [Techreport]
代码溯源:它是什么,为何重要?[GitClear]
调查显示 AI 如何改变开发者的工作体验 [GitHub]
领略下一代开发者生产力的风采 [O’reilly]
当你的代码变成犯罪现场 [Pragmatic Programmers]
敏捷软件工艺中的代码洁净之道:实用手册及其引用 [Robert C. Martin, 作者]
[JetBrains AI:提升你的编程工具,迎接新的自由 (https://www.jetbrains.com/ai/)[JetBrains]
Git 提交指南:深入了解 git-commit[Git 文档]
如何使用 Tech Debt 浏览器优化代码 [GitClear]
“不要重复自己” 原则的智慧 [Wikipedia]
X:Adam Tornhill 分享的思考 [X/Twitter]
原文:Coding on Copilot(https://gitclear-public.s3.us-west-2.amazonaws.com/Coding-on-Copilot-2024-Developer-Research.pdf) 作者:William Harding,Matthew Kloster
译文:在 Copilot 的协助下编程白皮书 ——2023 年的数据显示了代码质量面临的挑战(https://baoyu.io/translations/llm/coding-on-copilot-2024-developer-research)
译者:宝玉
- EOF -
1、改几行代码,for 循环耗时从 3.2 秒降到 0.3 秒!
关注「程序员的那些事」加星标,不错过圈内事
点赞和在看就是最大的支持❤️
微信扫码关注该文公众号作者