AI Code Review
如何用 AI 幫我處理
每天要面對的 Code Review
從 review 壓力,到整理出一套 PR 輔助審查方法
AI Code Review
從 review 壓力,到整理出一套 PR 輔助審查方法
PR 變多
review 壓力變大
MUST / SHOULD / MAY
先定義值得處理的常見問題
工具放在 review 前
先處理常見問題
AI 負責提醒與整理
團隊負責判斷與取捨
先從最明顯的感覺開始
產出速度變快,品質把關的責任卻沒有一起消失,反而壓力更大了
品質把關的責任沒有消失,只是換了位置
AI 加進來後,這些問題只會更明顯
品質責任沒有消失,每一則評論都要判斷值不值得處理
改動是否真的解決問題,邊界是否合理
if ($order->paid()) {
return $refundService->refund($order);
}
已出貨訂單也允許退款嗎?這裡需要確認需求邊界
讓後續維護的人看得懂當時的取捨
// legacy mapping 先保留
// mobile v2 下線後移除
return $this->mapLegacyStatus($status);
把風險、影響與建議說清楚
- Log::info('failed', ['email' => $user->email]);
+ Log::info('failed', ['user_id' => $user->id]);
這裡會把 email 寫進 log,屬於 PII,建議改用 user_id
最大的轉折
問題不是看不到風險,而是不知道哪些值得留下
public function group($orders)$g = [];foreach ($orders as $o) { $g[$o->status][] = $o;return $orders ->groupBy('status');同樣是建議
工具限制
public function refund(Order $order) {
return $this->refundGateway->refund($order);
}
這裡看起來缺少退款失敗情境的測試
不能 merge,錯誤會直接影響金流
可以先合併,但要留下後續補測試任務
踩過的坑
但其實 PR 只是在做 coding style 調整
文字敘述缺乏「不改的話,會有什麼影響?」
但其實 route middleware 已經處理過
快不是重點
準才會被採用
目標縮小
依據明確、能直接行動
看起來重要,但證據不夠
不要急著留言
同一段程式碼的同一個根因
不要拆成多則通知
信心度低、又偏風格喜好
不要變成正式評論
payload 可能包含 email,請遮蔽或改記匿名欄位
合併 timeout 與失敗提示風險,補一組 gateway timeout 測試
評論分級
RFC 2119:用來表達「要求強度」的語彙
標準只存在文件裡,很容易在 review 現場被遺忘
PII 不能進 log
金流失敗路徑要補測試
命名偏好不能擋 merge
違反明確底線,不修就不能 Merge
影響品質與維護性,不修要說明理由
偏好或取捨,不修也不擋 Merge
這段 log 可能包含 email,請遮蔽後再寫入
這次有新增錯誤分支,建議補一組 timeout 測試
只有風格偏好,保留討論,不進正式評論
工具化
其中「審查順序」拆成幾層 —— 降低認知負荷
先全貌,再架構、邏輯、品質,最後才整理評論 —— 不會一開始就陷進命名跟風格
先掃掉常見問題,讓 reviewer 專注在高價值的判斷
先檢查明顯問題、缺測試、錯誤處理與團隊規範
只留下高信心、能行動、merge 前值得處理的問題
需求、架構、風險接受與最後合併判斷回到人身上
健康的工作流
作者寫功能與基本測試
作者查找明顯 Bug、測試缺口、規範
作者使用工具使用工具輔助修正
MAY 保留在報告
PR 開出後,只補高信心問題
作者使用工具需求、架構、風險、merge
團隊成員導入節奏
信任,是慢慢累積出來的
常見問題、測試缺口、團隊規範,先產生摘要
不要急著發 PR comment每則評論都有分級、問題、影響、建議
開始看出工具常在哪裡誤判信任足夠後,再評估要不要接進送審前檢查
不是一開始就做邊界
AI 可以指出違規,但例外是否成立要由團隊決定
SendReceiptMail::dispatchSync($order);request 不能被寄信卡住,這是團隊既有底線
$request->validate(['reason' => 'required']);團隊即有寫法為使用 FormRequest,
但內部一次性操作可以例外,但要寫清楚理由
final class OrderController extends Controller沒有團隊規範時,先當可以討論的項目,
不直接變成擋 merge 的要求
重點回顧
有價值的,是高信心、能行動、merge 前值得處理的
MUST / SHOULD / MAY 幫作者理解期待,也避免把個人偏好放大成 merge 的阻礙
要不要 merge、要不要例外、要不要改標準,由團隊決定
如果團隊自己都說不清楚,什麼問題一定要改
反過來說
我的答案不是
真正的答案是
Q&A
謝謝大家
如果你也在團隊裡導入 AI review,歡迎一起交流
等待更久
PR 開出去之後,大家都很忙,review 容易卡住
重複檢查
缺少測試、錯誤處理、命名慣例,每次都要再提醒一次
標準不一致
同一個問題,有人會擋,有人會放