今天小编分享的科学经验:AI也造代码屎山!研究发现GitHub Copilot代码可维护性差,偏爱“无腦重写”而非重构复用已有代码,欢迎阅读。
丰色 发自 凹非寺
量子位 | 公众号 QbitAI
AI 帮忙写代码程式员用了都说好,但代码质量真的靠谱吗?
结果或许令你大跌眼镜。
一家名为 GitClear 的公司分析了近四年超过 1.5 亿行代码后发现,随着 GitHub Copilot 工具的加入,代码流失率(即代码写入后不久又被返工修改、删除的情况)出现了显著上升:
2023 年为 7.1%,而 2020 年时仅为 3.3%,翻了一番。
与之相应的,代码复用率也出现了明显下降。
言外之意,AI 写的很多内容其实不亚于 " 屎山 ",根本不好随着业务的变化作相应更改。
看起来,AI 编程工具还远没有宣传中的那么好用?
Copilot 更爱直接添加代码而不鼓励复用
GitClear 收集的 1.5 亿行代码中,有 3/2 来自匿名私企,剩下的 1/3 则源自于谷歌、Meta 和微软的开源项目。
它们全部被排除了 " 噪声 " 数据,比如在多个分支中提交的一模一样的代码、空行以及其他没有意义的代码行。
调查的主要对象是微软的 GitHub Copilot。
它于 2021 年 6 月推出测试版,按照 CEO 说法,截至 2023 年第三季度,该工具已有超 100 万开发者付费订阅,能够帮助开发者编写 46% 的代码,并将编码速度提高 55%。
不过在此,GitClear 不关心编码速度,只关心质量。
"AI 编程工具更类似于高级开发人员,仔细又精细?还是更像短期承包商一样,只在乎面前的任务完成与否?"
为此,他们统计了这 1 亿行 + 代码的新增、删除、更新、移动、复制 / 粘贴等情况,得出了这样一个趋势表格:
从中我们可以发现:
Copilot添加代码、复制 / 粘贴代码的百分比比更新、删除和移动增加得更明显。
其中我们还可以清晰地看到,移动代码的百分比从 2020 年的 25% 下降到了 13.4%,这是所有数据中唯一一个反向特例。
更少的移动意味着更少的重构和复用,加上大幅增长的添加、复制 / 粘贴代码,这表明:
AI 编程工具并不鼓励代码复用、在已有代码上进行修改,而是更倾向于 " 无腦重写 "。
在此,GitClear 也指出,过度新增代码、复制 / 粘贴对代码的长期可维护性也相当不利。
这其实在人类程式员中也是老问题,可能是程式员觉得解决当下问题比思考如何复用、整合现有代码更快更容易,也可能是因为同个项目组中的开发人员沟通不畅等。
遭殃的就变成后面的维护人员。
Copilot 的代码质量下降也体现在代码流失率(Churn)这个数据上。
在此,它的标准定义是代码编写后不到两周的时间内修改更新的百分比。
表格显示,2020 年的流失率为 3.3%(那会还没有用上 Copilot),2023 年增长到 5.5%。
GitClear 预计,2024 年将直接相比 2020 年翻一番之多,达到 7.1%。
这说明 AI 的加速,并没有带来足够高质量的代码。
除了以上结论,GitClear 还发现,Copilot 的代码建议算法还被设计为总是提出最有可能被用户接受的建议——
这选择乍一听没啥毛病,但其实会忽略代码简洁易读的重要性。
总的来说,这项结果足以让那些担心 AI 编程工具会取代人类程式员的人暂时把心放肚子里。
最近也有不少其他研究佐证了 GitClear 的发现。
比如来自 CodeScene 的一篇报告就表示:
在编码任务中,AI 远无法取代人类;今天的 AI 太容易出错,且远未达到能够安全修改已有代码的程度。
网友体验大差不差
实实在在使用过 Copilot 的人怎么说?
一位网友表示:
我用了俩个月后取消了会员,因为花了太多精力去检查 AI 给出的代码以及修复 bug。
在 TA 看来,现阶段还是自己编写内容要省力得多,因为自己知道自己想要写什么,修复自己的 bug 总是比修复机器人的更容易。
有人使用的是 ChatGPT 而非 Copilot,也对 TA 的话表示了赞同:
我对 AI 的能力感到惊讶,但还是不会称其为 " 好代码 "。
当然,Copilot 在大家眼里也并非一无是处。
一位从事 web 开发 20 多年的程式员就表示:
用它编写重要的 SQL 或 TypeScript 代码时,总是失败;但对于编写测试、请求处理、React 样式等等来说,它还是可以帮我节省大量时间的。
你的 Copilot(或者其他 AI 编码工具)体验如何?你同意 GitClear 的发现吗?
参考链接:
[ 1 ] https://devclass.com/2024/01/24/ai-assistance-is-leading-to-lower-code-quality-claim-researchers/
[ 2 ] https://visualstudiomagazine.com/articles/2024/01/25/copilot-research.aspx
[ 3 ] https://www.gitclear.com/coding_on_copilot_data_shows_ais_downward_pressure_on_code_quality
— 完 —
点这里关注我,记得标星哦~
一键三连「分享」、「点赞」和「在看」
科技前沿进展日日相见 ~
>