![]()
根據CodeRabbit最新發布的報告,AI代碼生成技術在完全主導軟件開發之前,仍有一些問題需要解決。與人類編寫的代碼相比,AI生成的代碼在拉取請求分析中發現的問題數量增加了1.7倍。
AI編程助手已成為軟件開發工作流程的標準組成部分,但開發人員對此提出了警告。平均而言,AI生成代碼的拉取請求每次發現10.83個問題,而人類編寫的代碼平均只有6.45個問題。AI協作編寫代碼的拉取請求也顯示出問題數量的更高峰值。
根據CodeRabbit的分析,分布情況更為重要:AI生成的拉取請求具有更長的尾部分布,這意味著它們產生了更多"繁忙"的審查。AI拉取請求在多個方面都更難審查。采用AI編程工具的團隊應該預期更高的差異性和更頻繁的拉取請求問題峰值,需要更深入的審查。
總體而言,AI生成代碼的拉取請求中發現的問題主要與邏輯和正確性相關。但在包括正確性、可維護性、安全性和性能在內的每個主要類別中,AI協作編寫的代碼始終比僅由人類生成的代碼產生更多問題。
12月17日發布的報告中,CodeRabbit分析了470個開源GitHub拉取請求,其中包括320個AI協作編寫的拉取請求和150個可能僅由人類生成的請求。報告結果表明:"AI加速了輸出,但也放大了某些類別的錯誤。"
報告還發現,AI協作編寫的拉取請求中安全問題持續增加。雖然注意到的漏洞中沒有一個是AI生成代碼獨有的,但它們出現的頻率明顯更高,增加了AI輔助開發的整體風險。AI會犯危險的安全錯誤,開發團隊必須更好地發現這些錯誤。
不過,AI也有一些優勢。拼寫錯誤在人類編寫的代碼中幾乎是AI代碼的兩倍(18.92對10.77)。這可能是因為人類程序員編寫了更多的內聯文本和注釋,或者僅僅是因為開發人員"拼寫不好"。可測試性問題在人類代碼中也出現得更頻繁(23.65對17.85)。
盡管如此,整體研究結果表明,隨著AI生成代碼成為工作流程的標準部分,需要建立防護措施。應該預先提供項目特定的上下文,讓模型訪問約束條件,如不變量、配置模式和架構規則。為了減少可讀性、格式化和命名方面的問題,應該應用嚴格的CI規則。對于正確性,開發人員應該要求對任何重要的控制流進行合并前測試。
其他發現包括:
嚴重性隨著AI的使用而升級,出現更多關鍵和重大問題。AI引入的命名不一致性增加了近兩倍,經常出現不清晰的命名、術語不匹配和通用標識符。AI代碼"看起來正確",但經常違反本地習慣用法或結構。AI生成的代碼經常創建與實際宕機相關的問題。性能回歸雖然罕見,但主要由AI驅動。錯誤的排序、錯誤的依賴流或并發原語的誤用在AI拉取請求中出現得更頻繁。格式化問題在AI拉取請求中的出現頻率是人類代碼的2.66倍。
Q&A
Q1:AI生成的代碼比人類代碼產生多少倍的問題?
A:根據CodeRabbit的報告,AI生成的代碼在拉取請求分析中發現的問題數量是人類編寫代碼的1.7倍。具體來說,AI生成代碼的拉取請求平均發現10.83個問題,而人類編寫的代碼平均只有6.45個問題。
Q2:AI編程助手在哪些方面表現比人類更好?
A:AI在某些方面確實有優勢。拼寫錯誤在人類編寫的代碼中幾乎是AI代碼的兩倍(18.92對10.77),可測試性問題在人類代碼中也出現得更頻繁(23.65對17.85)。這可能是因為人類程序員編寫了更多的內聯文本和注釋。
Q3:使用AI編程工具的團隊應該采取哪些防護措施?
A:團隊應該預先提供項目特定的上下文,讓模型訪問約束條件如不變量、配置模式和架構規則;應用嚴格的CI規則來減少可讀性和格式化問題;要求對重要控制流進行合并前測試;建立安全默認設置;采用AI感知的拉取請求檢查清單;使用第三方代碼審查工具。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.