豐色 發自 凹非寺
量子位 | 公衆号 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
— 完 —
點這裏關注我,記得标星哦~
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~