Skip to main content

用 AI 做 Code Review 靠譜嗎?自動化程式碼審查的實務經驗

· 閱讀時間約 11 分鐘
Felo AI
Operations

AI 程式碼審查實務經驗——能做什麼、不能做什麼、怎麼跟人工審查搭配,含 Claude Code 實際操作範例。

每個團隊都知道 Code Review 重要。每個團隊也都知道 Code Review 是瓶頸。

PR 開了三天沒人看。Reviewer 太忙只掃了一眼就 approve。或者反過來——reviewer 太認真,一個 PR 來回改了五輪,開發者快崩潰。

AI 能幫上忙嗎?能,但不是你想的那種「幫」。

這篇文章不賣夢——不會告訴你「AI 取代 Code Review」。而是根據實際使用經驗,說清楚 AI 在 Code Review 中能做什麼、不能做什麼、怎麼跟人工審查搭配效果最好。


AI Code Review 能做什麼

1. 程式碼風格一致性

AI 非常擅長抓風格問題——命名不一致、縮排混亂、import 順序、多餘的空行。這些問題人工 review 時容易忽略(因為太無聊了),但 AI 不會漏。

> 幫我 review src/api/users.ts 的程式碼風格,對照我們的 CLAUDE.md 規範

Claude Code 會逐一比對你的規範,列出所有不一致的地方。比 ESLint 更靈活,因為它能理解語義層面的風格(例如「錯誤處理要用 Result 型別而不是 try-catch」)。

2. 常見 Bug 偵測

AI 能抓到一些常見的 bug 模式:

  • 未處理的 null/undefined
  • 非同步操作缺少 await
  • 陣列越界存取
  • 資源未釋放(檔案 handle、資料庫連線)
  • 邏輯條件錯誤(off-by-one、邊界條件)
> review 這個 PR 的改動,特別注意可能的 bug 和邊界條件

3. 安全漏洞掃描

AI 能辨識 OWASP Top 10 的常見漏洞模式:

> 檢查 src/api/auth.ts 有沒有安全漏洞,特別是 SQL injection、XSS、認證繞過

它會標出可疑的地方,例如:

  • 未參數化的 SQL 查詢
  • 未消毒的使用者輸入直接渲染到 HTML
  • 硬編碼的密碼或 API key
  • 不安全的 CORS 設定

4. 文件缺口

AI 能發現缺少文件的地方——公開函式沒有 JSDoc、複雜邏輯沒有註解、API endpoint 沒有說明。

> 這個 PR 新增了哪些公開 API?有沒有缺少文件的地方?

5. 效能問題

AI 能辨識一些常見的效能反模式:

  • React 元件不必要的重新渲染
  • N+1 查詢
  • 大量資料的同步處理(應該用串流或分頁)
  • 記憶體洩漏模式
> 這段程式碼有效能問題嗎?特別注意資料庫查詢和記憶體使用

AI Code Review 不能做什麼

1. 商業邏輯驗證

AI 不知道你的業務規則。它不知道「VIP 客戶的折扣上限是 30%」或「訂單金額超過 10 萬需要主管審核」。

它能告訴你程式碼有沒有 bug,但不能告訴你程式碼有沒有正確實作業務需求。

2. 架構決策評估

AI 能看到程式碼的結構,但不知道你的架構決策背後的原因。

「為什麼這裡用 Event Sourcing 而不是 CRUD?」——這個問題的答案在團隊的討論記錄裡,不在程式碼裡。AI 可能會建議「簡化成 CRUD」,但那可能違反了你們深思熟慮的架構決策。

3. 團隊脈絡

AI 不知道:

  • 這段程式碼是暫時的 workaround,下個 sprint 會重構
  • 這個 API 的命名是為了跟第三方服務保持一致
  • 這個看起來多餘的檢查是因為上次出過 production incident

這些脈絡存在團隊成員的腦袋裡(或者散落在 Slack 和 Jira 裡)。AI 看不到。


實際操作:用 Claude Code 做 Code Review

基本用法

# 進入專案目錄
cd ~/projects/my-app

# 啟動 Claude Code
claude
> 幫我 review 最近這個 commit 的改動

Claude Code 會自動執行 git diff,分析所有改動,給出 review 意見。

進階用法:針對性 Review

> 只看 src/api/ 底下的改動,重點檢查:
> 1. 有沒有安全漏洞
> 2. 錯誤處理是否完整
> 3. 有沒有遵守我們的 API 回應格式

PR Review

> 幫我 review PR #42 的所有改動

Claude Code 會用 gh pr diff 42 取得 PR 的完整 diff,逐檔案分析。

搭配 CLAUDE.md 的規範

在 CLAUDE.md 中加入 review 標準:

## Code Review 標準
- 所有公開函式必須有 TypeScript 型別
- API endpoint 必須有錯誤處理
- 資料庫查詢必須使用參數化查詢
- 新增的功能必須有對應的測試
- 不允許 any 型別(除非有註解說明原因)

這樣 Claude Code 在 review 時會自動對照這些標準。


AI + 人工的最佳搭配

AI Code Review 不是取代人工,而是讓人工 review 更有效率。最佳的搭配方式:

第一輪:AI 掃描(自動)

讓 AI 先做一輪掃描,抓出:

  • 風格問題
  • 常見 bug 模式
  • 安全漏洞
  • 缺少的文件和測試

開發者根據 AI 的回饋先修一輪。

第二輪:人工 Review(聚焦)

人工 reviewer 不用再花時間看風格和基本 bug——AI 已經處理了。Reviewer 可以聚焦在 AI 做不到的事:

  • 商業邏輯是否正確
  • 架構決策是否合理
  • 程式碼是否符合團隊的長期方向
  • 有沒有更好的設計方案

效果

  • AI 處理 60-70% 的機械性 review 工作
  • 人工 reviewer 聚焦在高價值的判斷
  • PR 的來回次數減少(基本問題在第一輪就修掉了)
  • Review 品質提升(reviewer 有更多精力看重要的東西)

跨 Session 的 Review 脈絡

Code Review 不是一次性的事。團隊的 review 標準會演進——上次出了一個 timezone 的 bug,之後所有涉及時間處理的程式碼都要特別注意。上個月決定從 REST 遷移到 GraphQL,新的 PR 不應該再新增 REST endpoint。

這些演進中的 review 脈絡,AI 每次開 session 都不記得。

如果你用 MemClaw 管理專案工作區,可以把 review 相關的決策和模式記錄在工作區裡:

> 把這次 review 的結論存到工作區:
> 1. timezone 處理必須用 UTC,顯示時再轉換
> 2. 新的 API 一律用 GraphQL,不再新增 REST endpoint
> 3. 認證 middleware 要檢查 token 過期時間

下次 review 時載入工作區,Claude 就知道這些累積的 review 標準:

> 載入 my-project 工作區
> 幫我 review 這個 PR,注意我們之前記錄的 review 重點

Claude 會自動對照工作區裡的 review 標準,不用你每次重新交代。

讓 AI 記住你的 review 標準 → memclaw.me


常見問題

AI Code Review 能完全取代人工嗎?

不能。AI 擅長機械性的檢查(風格、bug 模式、安全漏洞),但不能判斷商業邏輯、架構決策和團隊脈絡。最佳做法是 AI 先掃一輪,人工聚焦高價值判斷。

哪些語言支援最好?

Claude Code 對 TypeScript/JavaScript、Python、Go、Rust、Java 的 review 品質最好。這些語言的訓練資料最多,AI 對常見模式和反模式的辨識最準確。

會不會產生太多噪音?

可能會。AI 有時候會標出不是問題的「問題」(false positive)。解決方法:在 CLAUDE.md 中明確寫出你的規範,減少 AI 的猜測空間。

團隊裡每個人都要裝 Claude Code 嗎?

不一定。可以由一個人(或 CI/CD)跑 AI review,把結果貼到 PR 的 comment 裡。其他人只需要看 AI 的 review 結果。

可以整合到 CI/CD 嗎?

可以。用 Claude Code 的單次指令模式:

claude -p "review the changes in this PR, output as markdown" > review.md

把這個指令加到 CI/CD pipeline 裡,每個 PR 自動跑一次 AI review。


總結

AI Code Review 不是萬能的,但它能處理 60-70% 的機械性 review 工作,讓人工 reviewer 聚焦在真正需要人類判斷的地方。

關鍵是搭配得當:AI 做第一輪掃描,人工做第二輪聚焦 review。

從這裡開始:

  1. 在 CLAUDE.md 中加入你的 review 標準
  2. 試著用 Claude Code review 下一個 PR
  3. 安裝 MemClaw 累積 review 脈絡——免費開始

延伸閱讀: