AI News HubLIVE
站内改写2 分鐘閱讀

AI編寫的程式碼是否比人類程式碼更容易出Bug?

透過對28個開源倉庫、112,382次提交的分析,研究發現AI代理提交的程式碼引入Bug的機率並不高於人類,且程式碼存活時間更長。但此結論依賴於人類稽核,且資料主要來自人工驅動的AI代理。

來源Hacker News AI作者: raghavchamadiya

關於AI編寫的程式碼是否比人類手寫程式碼更容易引入Bug,工程師們一直各執一詞,但很少有人能提供資料支援。Repowise團隊採用缺陷預測領域的標準方法——透過分析實際專案的Git歷史,將每次Bug修復歸因於引入該Bug的提交。他們分析了28個公共倉庫中112,382次提交,涵蓋了AI編碼代理首次合併真實Pull Request的一年時間。

研究首先構建了一個每個提交的溯源檢測器,透過讀取八種不同訊號(如機器人賬戶身份、服務郵箱、提交訊息頁尾、合作者尾註等)來區分程式碼來源,並經過盲測驗證,精確率達到96.2%。根據來源,代理提交被分為三個層級:T1(自動機器人代理,如Devin、Copilot編碼代理)、T2(人類驅動的代理,如Claude Code、Codex,這是絕大多數)和T3(AI輔助,僅新增合作者標記)。

核心發現是:AI代理提交的程式碼並不比人類程式碼更容易引入Bug。在控制變更規模後,人類驅動的AI代理(T2)引入Bug的機率僅為人類的0.57倍(95%置信區間0.42-0.76),自動機器人代理(T1)為0.75倍(0.43-0.95),AI輔助(T3)為0.96倍(0.69-1.08),與人類無異。即使採用更嚴格的B-SZZ變體來消除偏向,T2的效果仍為0.79(0.68-1.01),置信區間上限剛觸及1.0,因此沒有證據表明代理提交引入了更多Bug。

此外,AI編寫的程式碼行存活時間更長。在相同倉庫中,人類驅動的AI代理編寫的程式碼行存活率比人類程式碼高17.9個百分點。研究提出了三種可能原因:一是代理的Pull Request可能經過更嚴格的審查;二是代理提交偏向修復而非新功能,修復型提交風險較低;三是人類基線並非最優,包含了許多匆忙的提交。

然而,研究有重要限制:結果僅針對已審查併合並的提交;未檢測到的代理程式碼(開發者手動複製)被計為人類,可能低估了影響;代理活躍的倉庫較新(約12個月);資料集並非隨機樣本。總體而言,資料表明,在人類審查的前提下,有能力的開發者配合AI代理產生的程式碼質量至少不低於人類單獨工作。