AI 時代的代碼審查:解決代碼生成的非對稱性
生成式 AI 的出現從根本上改變了軟體開發生命週期。雖然編寫代碼所需的時間大幅下降,但審查代碼所需的時間卻保持不變,甚至有所增加。這造成了一種危險的非對稱性:代碼生成的速度遠遠超過了人類有效審核的能力。
當生成一個 pull request (PR) 的成本趨近於零時,確保品質的負擔便完全轉移到了審查者身上。這種轉變往往導致兩個極端:審查者被大量的 PR 淹沒,或者他們屈服於「橡膠印章式審查」(rubber-stamping),即為了清理積壓的工作而僅僅是為了通過而合併代碼,而沒有進行批判性的審視。
從代碼審查轉向計劃審查
為了應對這種非對稱性,一些團隊正在將干預點從流程的末端移向流程的開端。與其審查最終的實現,不如將重點轉移到審查「計劃」上。
透過在生成任何一行代碼之前,就對技術計劃進行協作與迭代,團隊可以確保在架構、邏輯和邊緣情況上達成一致。這降低了 AI 生成大量在方法論上存在根本缺陷的代碼的風險,因為審查和拒絕大量代碼的成本遠比審查一份簡單的計劃文檔更高的。當計劃被批准後,隨後的代碼審查就變成了一個驗證步驟——檢查實現是否符合計劃——而不是發現架構缺陷的過程。
利用 AI Agent 進行品質保證
雖然以人為中心的計劃審查對於高層級設計至關重要,但代碼審查的戰術層面可以透過 AI 來增強。目標並非取代人類審查者,而是減輕他們的「認知負荷」。
自動化審查流程
一些組織正在實施多層次的審查流水線,其中代碼在到達人類之前,必須先通過針對公司特定編碼標準、穩健性和品質模式進行訓練的獨立 AI agent 的審查。這建立了一個過濾器,可以捕捉到一些容易發現的問題——例如 docstring 錯誤或風格違規——從而讓人類可以專注於高層級的邏輯。
基於風險的路由
另一種新興策略是使用「爆炸半徑」(blast radius)評估。透過根據複雜度和潛在影響力對變更進行分類,團隊可以自動化低風險變更的合併流程,同時將高複雜度的變更標記為需要嚴格的人類審查。
"如果它是低複雜度 / 低爆炸半徑,它會被自動合併。如果它是高複雜度 / 高爆炸半徑,它會被標記為需要人類審查。"
AI 增強型人類審查
即使在人類必須審查代碼時,AI 也可以作為補充性的指南。Agent 可以生成代碼意圖的描述,並為人類調查提供潛在問題的亮點。這建立了一種共生關係,其中 AI 處理那些「懶惰的人類眼睛」可能會遺漏的瑣碎細節,而人類則對標記出的問題是否確實構成隱憂提供最終判斷。
結論
傳統的 PR 流程是為了一個寫代碼是最困難的部分的世界而設計的。在 AI 時代,最困難的部分現在是審查。透過向左移(shift left)轉向以計劃為基礎的協作,並利用 AI agent 來過濾和增強人類的審查流程,團隊可以在不成為 AI 所提供的速度瓶頸的同時,維持高水準的代碼品質。