AI輔助編程現(xiàn)狀:AI工具提高了速度,但錯(cuò)誤代碼也大幅增加
在軟件開發(fā)領(lǐng)域,AI工具越來越流行。去年GitHub發(fā)布報(bào)告稱,有了AI輔助工具,開發(fā)者編程速度提高55%。
但是,AI工具輔助編寫的代碼是不是更好呢?GitClear對2020年1月至2023年12月間編寫的1.53億行代碼進(jìn)行檢查發(fā)現(xiàn),相比以前,編寫之后修改的代碼行數(shù)明顯增加,2024年相比2021年增加了一倍。
換言之,有了AI工具,雖然編程速度加快了,但在第一次編寫時(shí)錯(cuò)誤也大大增加了。形象地說,用AI輔助編寫代碼,就像聘請一名短期合同工為你工作,他關(guān)心的是如何編寫冗長的代碼,而不是保證代碼的可維護(hù)性。
AI會(huì)復(fù)制原有代碼的錯(cuò)誤
開發(fā)者安全公司Snyk在報(bào)告中指出,GitHub AI編程輔助工具Copilot并不安全,如果已有代碼庫本身存在安全問題,工具編寫的代碼同樣也會(huì)不安全。
Snyk在2月22日的報(bào)告中指出,Copilot會(huì)復(fù)制代碼中存在的安全問題,如此一來,已有安全隱患會(huì)讓Copilot代碼更加不安全。
市場上已經(jīng)出現(xiàn)不少生成式AI編程工具,比如亞馬遜CodeWhisperer,ChatGPT等?,F(xiàn)有工具的最大問題在于:它無法理解語義,所以無法對代碼作出評(píng)判。
GitHub Copilot從海量過往代碼中學(xué)習(xí),形成特定模式和結(jié)構(gòu),然后生成代碼片段。這套學(xué)習(xí)方法有一定優(yōu)勢,但也有一個(gè)缺陷。Copilot代碼可能會(huì)復(fù)制已有安全漏洞,或者復(fù)制相鄰文件中的不良案例。
如何降低影響呢?Snyk給出一些建議:包括開發(fā)者手動(dòng)檢查代碼;安全團(tuán)隊(duì)?wèi)?yīng)該設(shè)立SAST護(hù)欄;開發(fā)者應(yīng)該遵守安全編程指南;安全團(tuán)隊(duì)?wèi)?yīng)該給開發(fā)團(tuán)隊(duì)培訓(xùn),將每個(gè)團(tuán)隊(duì)的積壓問題分類,按優(yōu)先級(jí)排序;執(zhí)行團(tuán)隊(duì)?wèi)?yīng)該強(qiáng)制設(shè)置安全護(hù)欄。
一般來說,平均每個(gè)商務(wù)軟件項(xiàng)目的第一手代碼都會(huì)有40個(gè)漏洞,當(dāng)中約三分之一都是高危漏洞。AI生成工具會(huì)復(fù)制這些漏洞,影響惡劣??缯灸_本攻擊(cross-site scripting,XSS)、路徑穿越(Path Traversal)、SQL注入、硬編碼加密密鑰等安全問題比較常見。
所以,行業(yè)幾乎有一個(gè)共識(shí):就眼下來看,AI輔助編程還沒有迎來黃金時(shí)代,AI還不夠好。
但AI輔助編程未來可期
GitHub CEO Thomas Dohmke不久前接受采訪時(shí)表示:“開發(fā)者已經(jīng)進(jìn)入AI時(shí)代?,F(xiàn)在的問題已經(jīng)很明確,你準(zhǔn)備以多快的速度上船?你是不是準(zhǔn)備繼續(xù)沉醉于過去,站在歷史錯(cuò)誤的一邊,忽視生產(chǎn)力提升的大好機(jī)遇?”
GitHub Copilot實(shí)際上歸微軟所有,最新財(cái)報(bào)顯示,最近一個(gè)季度Copilot付費(fèi)用戶數(shù)已經(jīng)突破130萬,相比前一個(gè)季度猛增30%,已經(jīng)有5萬家企業(yè)使用Copilot。
Thomas Dohmke稱,平臺(tái)上用戶編寫的代碼約有一半是AI生成的。Thomas Dohmke認(rèn)為,社區(qū)已經(jīng)普遍接受一個(gè)觀點(diǎn),即AI生成代碼需要人類程序員監(jiān)督審核。
值得一提的是,新手程序員特別喜歡使用Copilot,因?yàn)樗軈f(xié)助解決編程難題。
隨著編程自動(dòng)化程度的增加,代碼中的錯(cuò)誤可能會(huì)越來越多,這點(diǎn)其實(shí)已經(jīng)引起爭論。Thomas Dohmke稱,自Copilot引入之后錯(cuò)誤增加數(shù)量比較“正常”,沒有證據(jù)證明AI導(dǎo)致錯(cuò)誤猛增。
真是這樣嗎?未必。新手程序員大規(guī)模使用AI,一旦出現(xiàn)錯(cuò)誤,新手可能無法發(fā)現(xiàn),整個(gè)代碼的質(zhì)量可能會(huì)下降。
微軟對AI工具充滿期待,除了編程,它還希望Copilot能幫助用戶寫郵件、制作電子表格、分析Office文檔。微軟甚至還為Windows PC鍵盤增加一個(gè)“Copilot”按鍵。谷歌也在開發(fā)類似工具。
微軟CEO納德拉在最近的財(cái)報(bào)會(huì)議上表示,圍繞GitHub Copilot和它的生產(chǎn)力問題,我們已經(jīng)看到很多的證據(jù)和數(shù)據(jù),結(jié)果不錯(cuò)。納德拉預(yù)計(jì)其它Copilot應(yīng)用也會(huì)帶來良好效果。
總之,目前Copilot還是新生事物,相信再過一段時(shí)間,當(dāng)我們擁有更多數(shù)據(jù),就能對上述問題有更深刻理解。(小刀)