展會(huì)信息港展會(huì)大全

AI也造代碼屎山!研究發(fā)現(xiàn)GitHub Copilot代碼可維護(hù)性差,偏愛(ài)“無(wú)腦重寫(xiě)”而非重構(gòu)復(fù)用已有代碼
來(lái)源:互聯(lián)網(wǎng)   發(fā)布日期:2024-01-29 15:54:07   瀏覽:6133次  

導(dǎo)讀:豐色 發(fā)自 凹非寺 量子位 | 公眾號(hào) QbitAI AI幫忙寫(xiě)代碼程序員用了都說(shuō)好,但 代碼質(zhì)量 真的靠譜嗎? 結(jié)果或許令你大跌眼鏡。 一家名為GitClear的公司分析了近四年超過(guò)1.5億行代碼后發(fā)現(xiàn),隨著GitHub Copilot工具的加入, 代碼流失率 (即代碼寫(xiě)入后不久又被...

豐色 發(fā)自 凹非寺

量子位 | 公眾號(hào) QbitAI

AI幫忙寫(xiě)代碼程序員用了都說(shuō)好,但代碼質(zhì)量真的靠譜嗎?

結(jié)果或許令你大跌眼鏡。

一家名為GitClear的公司分析了近四年超過(guò)1.5億行代碼后發(fā)現(xiàn),隨著GitHub Copilot工具的加入,代碼流失率(即代碼寫(xiě)入后不久又被返工修改、刪除的情況)出現(xiàn)了顯著上升:

2023年為7.1%,而2020年時(shí)僅為3.3%,翻了一番。

與之相應(yīng)的,代碼復(fù)用率也出現(xiàn)了明顯下降。

言外之意,AI寫(xiě)的很多內(nèi)容其實(shí)不亞于“屎山”,根本不好隨著業(yè)務(wù)的變化作相應(yīng)更改。

看起來(lái),AI編程工具還遠(yuǎn)沒(méi)有宣傳中的那么好用?

Copilot更愛(ài)直接添加代碼而不鼓勵(lì)復(fù)用

GitClear收集的1.5億行代碼中,有3/2來(lái)自匿名私企,剩下的1/3則源自于谷歌、Meta和微軟的開(kāi)源項(xiàng)目。

它們?nèi)勘慌懦?ldquo;噪聲”數(shù)據(jù),比如在多個(gè)分支中提交的一模一樣的代碼、空行以及其他沒(méi)有意義的代碼行。

調(diào)查的主要對(duì)象是微軟的GitHub Copilot。

它于2021年6月推出測(cè)試版,按照CEO說(shuō)法,截至2023年第三季度,該工具已有超100萬(wàn)開(kāi)發(fā)者付費(fèi)訂閱,能夠幫助開(kāi)發(fā)者編寫(xiě)46%的代碼,并將編碼速度提高55%。

不過(guò)在此,GitClear不關(guān)心編碼速度,只關(guān)心質(zhì)量。

“AI編程工具更類似于高級(jí)開(kāi)發(fā)人員,仔細(xì)又精細(xì)?還是更像短期承包商一樣,只在乎面前的任務(wù)完成與否?”

為此,他們統(tǒng)計(jì)了這1億行+代碼的新增、刪除、更新、移動(dòng)、復(fù)制/粘貼等情況,得出了這樣一個(gè)趨勢(shì)表格:

從中我們可以發(fā)現(xiàn):

Copilot添加代碼、復(fù)制/粘貼代碼的百分比比更新、刪除和移動(dòng)增加得更明顯。

其中我們還可以清晰地看到,移動(dòng)代碼的百分比從2020年的25%下降到了13.4%,這是所有數(shù)據(jù)中唯一一個(gè)反向特例。

更少的移動(dòng)意味著更少的重構(gòu)和復(fù)用,加上大幅增長(zhǎng)的添加、復(fù)制/粘貼代碼,這表明:

AI編程工具并不鼓勵(lì)代碼復(fù)用、在已有代碼上進(jìn)行修改,而是更傾向于“無(wú)腦重寫(xiě)”。

在此,GitClear也指出,過(guò)度新增代碼、復(fù)制/粘貼對(duì)代碼的長(zhǎng)期可維護(hù)性也相當(dāng)不利。

這其實(shí)在人類程序員中也是老問(wèn)題,可能是程序員覺(jué)得解決當(dāng)下問(wèn)題比思考如何復(fù)用、整合現(xiàn)有代碼更快更容易,也可能是因?yàn)橥瑐(gè)項(xiàng)目組中的開(kāi)發(fā)人員溝通不暢等。

遭殃的就變成后面的維護(hù)人員。

Copilot的代碼質(zhì)量下降也體現(xiàn)在代碼流失率(Churn)這個(gè)數(shù)據(jù)上。

在此,它的標(biāo)準(zhǔn)定義是代碼編寫(xiě)后不到兩周的時(shí)間內(nèi)修改更新的百分比。

表格顯示,2020年的流失率為3.3%(那會(huì)還沒(méi)有用上Copilot),2023年增長(zhǎng)到5.5%。

GitClear預(yù)計(jì),2024年將直接相比2020年翻一番之多,達(dá)到7.1%。

這說(shuō)明AI的加速,并沒(méi)有帶來(lái)足夠高質(zhì)量的代碼。

除了以上結(jié)論,GitClear還發(fā)現(xiàn),Copilot的代碼建議算法還被設(shè)計(jì)為總是提出最有可能被用戶接受的建議

這選擇乍一聽(tīng)沒(méi)啥毛病,但其實(shí)會(huì)忽略代碼簡(jiǎn)潔易讀的重要性。

總的來(lái)說(shuō),這項(xiàng)結(jié)果足以讓那些擔(dān)心AI編程工具會(huì)取代人類程序員的人暫時(shí)把心放肚子里。

最近也有不少其他研究佐證了GitClear的發(fā)現(xiàn)。

比如來(lái)自CodeScene的一篇報(bào)告就表示:

在編碼任務(wù)中,AI遠(yuǎn)無(wú)法取代人類;今天的AI太容易出錯(cuò),且遠(yuǎn)未達(dá)到能夠安全修改已有代碼的程度。

網(wǎng)友體驗(yàn)大差不差

實(shí)實(shí)在在使用過(guò)Copilot的人怎么說(shuō)?

一位網(wǎng)友表示:

我用了倆個(gè)月后取消了會(huì)員,因?yàn)榛颂嗑θz查AI給出的代碼以及修復(fù)bug。

在TA看來(lái),現(xiàn)階段還是自己編寫(xiě)內(nèi)容要省力得多,因?yàn)樽约褐雷约合胍獙?xiě)什么,修復(fù)自己的bug總是比修復(fù)機(jī)器人的更容易。

有人使用的是ChatGPT而非Copilot,也對(duì)TA的話表示了贊同:

我對(duì)AI的能力感到驚訝,但還是不會(huì)稱其為“好代碼”。

當(dāng)然,Copilot在大家眼里也并非一無(wú)是處。

一位從事web開(kāi)發(fā)20多年的程序員就表示:

用它編寫(xiě)重要的SQL或TypeScript代碼時(shí),總是失敗;但對(duì)于編寫(xiě)測(cè)試、請(qǐng)求處理、React樣式等等來(lái)說(shuō),它還是可以幫我節(jié)省大量時(shí)間的。

你的Copilot(或者其他AI編碼工具)體驗(yàn)如何?你同意GitClear的發(fā)現(xiàn)嗎?

參考鏈接:

[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

贊助本站

人工智能實(shí)驗(yàn)室
相關(guān)內(nèi)容
AiLab云推薦
推薦內(nèi)容
展開(kāi)

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實(shí)驗(yàn)室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動(dòng)態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機(jī)會(huì) | 展會(huì)港