譯者 | 李睿
審校 | 重樓
GitHub Copilot、CodeRabbit和Codium AI等人工智能代碼審查工具正變得越來越流行,但它們并不是在各個(gè)方面都優(yōu)于人工審查者。
人工智能(AI)正在進(jìn)入各個(gè)行業(yè),為軟件編碼和開發(fā)等領(lǐng)域提供了許多優(yōu)勢(shì)。如今,許多開發(fā)團(tuán)隊(duì)采用了人工智能代碼審查工具,并發(fā)現(xiàn)它們能夠更快地發(fā)現(xiàn)錯(cuò)誤并提升代碼質(zhì)量。然而,正如任何新興技術(shù)一樣,人工智能也伴隨著對(duì)其局限性的質(zhì)疑,特別是在安全性和準(zhǔn)確性方面。
理解人工智能代碼審查工具
人工智能編碼工具是利用人工智能來分析和改進(jìn)代碼的軟件解決方案。傳統(tǒng)上,代碼審查需要同行或高級(jí)開發(fā)人員人工實(shí)施這一過程,但這可能很耗時(shí),并且容易受到人類的監(jiān)督。
人工智能代碼審查工具通過使用機(jī)器學(xué)習(xí)和自然語言處理來檢測(cè)代碼中的異常、錯(cuò)誤和安全漏洞,從而使代碼審查流程實(shí)現(xiàn)了較高程度的自動(dòng)化。這些工具通過快速掃描代碼來查找常見錯(cuò)誤、安全漏洞和低效邏輯。然后,它將提供改進(jìn)建議。
像GitHub Copilot、CodeRabbit和Codium AI這樣的工具可以分析代碼行并標(biāo)記問題區(qū)域,它們甚至在實(shí)時(shí)或?qū)彶檫^程中提供修復(fù)。這些工具背后的人工智能需要數(shù)據(jù)科學(xué)家對(duì)它們進(jìn)行大量代碼數(shù)據(jù)集的訓(xùn)練。這有助于它們從以前的評(píng)論中學(xué)習(xí),并隨著時(shí)間的推移不斷改進(jìn)建議。
2023年,人工智能代碼審查工具的市場(chǎng)規(guī)模為48.6億美元,研究人員預(yù)計(jì),從2024年到2030年,其復(fù)合年增長(zhǎng)率將達(dá)到27.1%。這種增長(zhǎng)表明,更多的行業(yè)將使用人工智能來簡(jiǎn)化開發(fā)和工作流程,并提高代碼質(zhì)量。
使用人工智能代碼審查工具的優(yōu)點(diǎn)
當(dāng)開發(fā)人員使用人工智能代碼審查工具時(shí),他們發(fā)現(xiàn)這些工具具有以下幾個(gè)優(yōu)點(diǎn):
1.一致性
代碼的審查人員對(duì)細(xì)節(jié)的關(guān)注和基于經(jīng)驗(yàn)的方法各不相同。此外,這項(xiàng)任務(wù)本身需要大量時(shí)間,這可能會(huì)導(dǎo)致人員倦怠,從而使發(fā)現(xiàn)缺陷變得更加困難。然而,使用人工智能工具,開發(fā)人員可以簡(jiǎn)化審查流程過程,因?yàn)檫@類工具在所有審查環(huán)節(jié)中均能保持統(tǒng)一且嚴(yán)格的分析標(biāo)準(zhǔn)。
它對(duì)每段代碼采用相同的標(biāo)準(zhǔn),確保不存在漏洞或錯(cuò)誤。因此,它們可以減少由于人為錯(cuò)誤或疲勞而忽略的實(shí)例。這種一致性有助于開發(fā)團(tuán)隊(duì)保持更高的代碼質(zhì)量標(biāo)準(zhǔn),特別是在需要多個(gè)團(tuán)隊(duì)成員完成的大型項(xiàng)目中。
2.速度
這些工具的運(yùn)行速度是另一個(gè)主要的好處。由于人工代碼審查非常耗時(shí),人工智能解決方案可以在短時(shí)間內(nèi)分析大量代碼。
憑借其瞬時(shí)速度,它們可以在人類所需的一小部分時(shí)間內(nèi)識(shí)別問題。這種快速分析允許開發(fā)人員接收實(shí)時(shí)反饋,使他們能夠在編寫代碼時(shí)進(jìn)行優(yōu)化。
3.可用性
從處理不切實(shí)際的截止日期到修復(fù)錯(cuò)誤和滿足新要求,開發(fā)人員總是處于時(shí)間緊迫的狀態(tài)。由于審查代碼的可用性有限,開發(fā)人員可以在需要時(shí)轉(zhuǎn)向人工智能工具。
由于具有全天候可用性,它們可以按時(shí)完成審查。這意味著專業(yè)人員可以保持項(xiàng)目進(jìn)度,并在問題出現(xiàn)時(shí)立即解決。
使用人工智能代碼審查工具的缺點(diǎn)
人工智能代碼審查工具可能有很多優(yōu)點(diǎn),但是對(duì)于那些使用代碼的人來說,考慮它們的缺點(diǎn)也是很重要的。
1.安全風(fēng)險(xiǎn)
人工智能代碼審查人員面臨的一個(gè)緊迫問題是,這些工具會(huì)帶來安全風(fēng)險(xiǎn)。雖然它們可以識(shí)別漏洞并提高代碼質(zhì)量,但它們并不是萬無一失的。事實(shí)上,安全軟件開發(fā)商Snyk公司使用人工智能代碼審查工具的經(jīng)驗(yàn)表明,這些工具可能建議使用不安全的代碼。然而,調(diào)查發(fā)現(xiàn),75.8%的受訪者認(rèn)為人工智能生成的代碼比人類編寫的代碼更安全。
許多開發(fā)人員對(duì)使用這些工具充滿信心,這種信心可能源于對(duì)了解人工智能運(yùn)作方面及其安全問題的迫切需求。雖然人工智能可以成為一項(xiàng)資產(chǎn),但同一項(xiàng)調(diào)查還顯示,56%的開發(fā)人員承認(rèn),這些軟件解決方案有時(shí)或經(jīng)常會(huì)引入安全漏洞等編碼問題。
因此,讓技術(shù)團(tuán)隊(duì)了解安全開發(fā)的局限性是非常重要的。與此同時(shí),適當(dāng)?shù)谋O(jiān)督是關(guān)鍵,因?yàn)樗匀恍枰斯彶閬肀WC減少漏洞。
2.誤報(bào)和漏報(bào)
人工智能工具尚未達(dá)到完美的程度,因?yàn)樗鼈冇袝r(shí)會(huì)將無關(guān)緊要的事項(xiàng)錯(cuò)誤地標(biāo)識(shí)為潛在問題?;蛘?,它們可能無法識(shí)別真正的代碼漏洞。誤報(bào)可能會(huì)使開發(fā)人員感到沮喪,因?yàn)樗麄儾坏貌换ㄙM(fèi)大量的時(shí)間來處理不構(gòu)成真正威脅的警告。隨著時(shí)間的推移,這會(huì)導(dǎo)致“警報(bào)疲勞”,導(dǎo)致軟件專業(yè)人員忽略有效的警告。
與其相反,漏報(bào)更令人擔(dān)憂,因?yàn)樗鼈冊(cè)试S實(shí)際的代碼缺陷蒙混過關(guān)。這個(gè)問題可能會(huì)導(dǎo)致代碼在運(yùn)行時(shí)效率低下或不安全。
3.場(chǎng)景理解能力有限
人工智能通常缺乏理解代碼背后更廣泛場(chǎng)景或意圖的能力。這可能會(huì)導(dǎo)致不恰當(dāng)?shù)慕ㄗh或遺漏人工審查者可能會(huì)發(fā)現(xiàn)的問題。
例如,人工智能工具可能會(huì)將代碼的某些部分標(biāo)記為低效或冗余,而不理解開發(fā)人員做出這些選擇來滿足特定需求的原因。此外,在審查專門的代碼時(shí),該工具可能會(huì)忽略對(duì)應(yīng)用程序的正常功能至關(guān)重要的依賴關(guān)系。當(dāng)開發(fā)人員必須忽略無關(guān)的反饋時(shí),缺乏場(chǎng)景意識(shí)可能會(huì)導(dǎo)致問題。
使用人工智能代碼審查工具有益嗎?
使用人工智能審查工具的好處是顯而易見的:
- 在發(fā)現(xiàn)小問題方面效率高。
- 節(jié)省開發(fā)人員發(fā)現(xiàn)常見錯(cuò)誤和提供實(shí)時(shí)反饋的時(shí)間。
- 允許更多地專注于復(fù)雜或創(chuàng)造性的工作。
然而,在使用它們時(shí)考慮到其局限性是至關(guān)重要的??紤]到它們的缺點(diǎn),人工智能工具最適合于預(yù)先審查,而不是完整的代碼審查。換句話說,它們?cè)谠缙诎l(fā)現(xiàn)表面問題方面非常有效,但項(xiàng)目仍需要徹底的人工審查。
利用人工智能代碼審查工具實(shí)現(xiàn)適當(dāng)?shù)钠胶?/h3>
當(dāng)使用人工智能進(jìn)行代碼審查時(shí),開發(fā)人員可以充分利用這些工具的各種優(yōu)勢(shì)。然而,它們也存在局限性。這就是開發(fā)人員應(yīng)該明智地使用它們的原因。通過利用這些工具的優(yōu)勢(shì),同時(shí)避免它們的缺點(diǎn),將使其開發(fā)和部署過程更加高效和安全。
原文標(biāo)題:Should You Use AI Code Review Tools?,作者:Zac Amos