代碼品質與安全 | 如何讓AI寫的代碼更靠譜?7個高效AI編碼準則瞭解一下

本文來源sonarsource.com,由SonarQube中國授權合作夥伴——龍智翻譯整理,旨在幫助開發團隊更高效、更安全地利用AI編碼,加速開發。

英文原作者:Tariq Shaukat,Sonar CEO

過去一年間,AI編碼已經從新鮮事物演變成必要工具。然而,當前關於AI編碼的討論大多聚焦於“體驗式編碼(vibe coding)”這類相對“從零開始”的應用場景。但絕大多數的企業和開發者並不在這種理想的場景下工作。他們面對的是龐大而陳舊的代碼庫,規模可能達到數百萬甚至數十億行。在這些環境中,任何錯誤——無論是漏洞還是安全問題——代價都極其高昂。據估計,不良軟體每年造成的損失超過2萬億美元。

這些巨型代碼庫本可以通過AI編程工具獲益,但必須以負責任的方式加以利用。在這方面,AI編程與常規編程並無二致:

  •  需要確保代碼沒有明顯的bug或漏洞,且具有良好的性能和穩健性;
  •  需要確認所有第三方庫都是安全的、最新的且獲得了適當的許可;
  •  需要確保新代碼具有可讀性,便於人類和大語言模型(LLMs)評估審查,以降低意外風險;
  •  需要確保代碼具有可維護性,避免代碼庫因AI代碼的增加而變得越來越脆弱。

企業內部需要建立起一套清晰的AI編碼使用最佳實踐。對此,Sonar作為領先的代碼品質與安全解決方案提供商,從實際客戶經驗出發,提出了企業應該培養的7個AI編程“習慣”。

1、黃金法則:開發者必須承擔責任

“誰搞砸,誰負責”是著名的Pottery Barn法則。在AI編碼領域,它應該變成:如果你接受了 AI生成的代碼,一旦它出問題,你必須負責。不可否認的是,AI代碼存在責任危機。一些客戶表示,他們的開發者接受了超過95%的AI生成的拉取請求,代碼幾乎沒有經過嚴格審查——這反映出了責任缺失。每個企業都應該遵守這個黃金法則:無論代碼是人工寫的還是AI生成的,開發者都要對其負責。

2、詳細記錄專案上下文

使用Mermaid圖、專案結構檔、設計文檔等,開發者和架構師早已駕輕就熟。而在AI編碼時代,更應該“寧多勿少”。清晰、全面的專案文檔能夠概述專案目標和設計方式,幫助開發者確保新代碼符合整體架構,也為AI編碼工具和代理提供必要的上下文,以便更高效地在代碼庫上運行。

3、代碼盡可能保持簡單

代碼熵增是真實威脅。缺乏維護的代碼庫將會變得越來越混亂,而可讀性差的代碼庫幾乎不可維護(或者說極其困難)。任何使用AI編碼的團隊都必須制定簡潔的規則,在提示LLM時加入約束條件並驗證其執行。常見的約束包括:

A:所有函數長度不得超過 X 行(如 50-100 行);

B:儘量減少認知複雜度(也可以使用迴圈複雜性);

C:代碼重複率要盡可能低。

4、嚴禁冗餘代碼

這是軟體開發的入門常識,但對AI編碼尤為關鍵。LLM經常會生成一些實際上未被使用的代碼,比如無用引用。這類冗餘代碼不僅會增加理解和維護代碼庫的難度,還會帶來極大的安全隱患。

例如,攻擊者可能會誘導LLM添加一些看似無害的依賴項或引用,這些依賴項和引用現在雖然未被調用,但將來可能會被惡意使用,從而造成嚴重的安全漏洞。這就是所謂的“後門”或“潛伏代理”注入,它只是LLM被惡意操控形成新型攻擊的一個例子,說明了為什麼安全代碼必須高質量且貼合實際用途。

5、全面分析機制

AI生成的代碼量非常龐大,所產生的問題通常隱蔽難查。你不只是要檢查拼寫錯誤或分號錯位,還要確保沒有複雜的bug或已知漏洞,並且確保AI引入的第三方庫獲得了合法授權,並且被良好維護。開發者的人工審查不可或缺,但這也會加重負擔,扼殺他們的工作效率和幸福感。沒有開發者願意成為AI的拷貝編輯器,沒有合適的工具,他們就難以應對AI代碼中潛藏的大量複雜問題。因此,為開發者配備合適的工具,以幫助識別和篩選問題至關重要。這些工具應該是確定性的、值得信賴且透明的,用以彌補AI輸出的非確定性。

6、強制單元測試

所有企業都應該設立高標準的測試覆蓋率,對AI生成的代碼進行全面的單元測試,並持續執行測試。另外,測試必須提前編寫,不能由生成代碼的同一個AI來編寫,防止AI“學會作弊”來通過測試。

7、嚴格代碼評審

分析代碼中的問題只是解決方案的一部分。唯有通過嚴格的代碼審查制度,才能確保AI編程規範被全面落實。如果不遵循最佳實踐,拉取請求一定會失敗,開發人員需要能夠迅速糾正問題。這就需要開發團隊有嚴格的紀律,以及好用的工具來促進檢查並使其自動化。

 這些AI編碼習慣本質上就是現代軟體開發的最佳實踐。在AI普及的今天,這些“最佳實踐”已經不再是“可有可無”,而是“必不可少”。你今天引入的代碼可能會在未來數年,甚至數十年內持續存在。

AI編碼模型和工具正在迅速改進,但無論它們多麼強大,企業仍然必須確保代碼是安全的、可持續維護的,技術債務是可控的。正如健康管理中的格言所說:“預防勝於治療。”好習慣就是最好的預防。

SonarQube的AI功能如何保障你的代碼開發效率與品質?

SonarQube AI Code Assurance(AI代碼保障能夠幫助開發人員識別和驗證AI生成的代碼。可以在代碼評審階段自動運行,幫助組織評估這些最佳實踐是否被應用在AI生成的代碼中。若發現嚴重問題,拉取請求將無法通過,並會明確指出導致失敗的所有問題。

在2025.1 LTA中,SonarQube Server可以自動檢測GitHub專案中由GitHub Copilot創建的代碼。SonarQube Server為包含AI生成代碼的專案提供即時品質評估和通過/失敗的標記,確保只有高質量的AI生成代碼才能投入生產。您可以使用Sonar推薦的AI Code Assurance品質門,或使用您自己的品質門,來確保所有AI代碼符合您的嚴格要求。

免費試用SonarQube或瞭解更多,請諮詢SonarQube中國授權合作夥伴-龍智,我們提供SonarQube企業版的免費試用、諮詢、銷售、安裝部署、技術支持等一站式服務。

普通話/英語服務: +852-55169850

粵語服務:+852-51679050

郵箱:customer@hkdsdtech.com

關於龍智

DragonSoft 於 2006 年成立,現已成爲中國領先的 DevSecOps 解決方案提供商。
我們融合 DevOps 與敏捷管理理念,並整合全球頂尖工具,爲客戶提供應用生命周期管理(ALM/SDLM)、DevSecOps 及敏捷開發等解決方案,涵蓋實施部署、系統升級、培訓支持、定制開發及維護服務。 透過自動化軟件開發流程,促進團隊協作,全面提升開發效率與產品質量,同時確保整個過程可追溯、可量化。