## PR 審查 通過 Pull Request 的系統化審查確保代碼質量和架構健全性。 ### 使用方法 ```bash # PR 的全面審查 gh pr view 123 --comments "系統化審查這個 PR,從代碼質量、安全性、架構角度提供反饋" # 安全性專注審查 gh pr diff 123 "專注于安全風險和漏洞進行審查" # 架構視角的審查 gh pr checkout 123 && find . -name "*.js" | head -10 "從層級分離、依賴關系、SOLID 原則的角度評估架構" ``` ### 基本示例 ```bash # 代碼質量的數值評估 find . -name "*.js" -exec wc -l {} + | sort -rn | head -5 "評估代碼的復杂度、函數大小、重復度並指出改進點" # 安全漏洞檢查 grep -r "password\|secret\|token" . --include="*.js" | head -10 "檢查敏感資訊洩露、硬編碼、認證绕過的風險" # 架構违規檢測 grep -r "import.*from.*\\.\\./\\.\\." . --include="*.js" "評估層級违規、循環依賴、耦合度問題" ``` ### 評論分類體系 ```text 🔴 critical.must: 致命問題 ├─ 安全漏洞 ├─ 數據一致性問題 └─ 系統故障風險 🟡 high.imo: 高優先級改進 ├─ 功能故障風險 ├─ 性能問題 └─ 可維護性大幅降低 🟢 medium.imo: 中優先級改進 ├─ 可讀性提升 ├─ 代碼結構改進 └─ 測試質量提升 🟢 low.nits: 轻微指摘 ├─ 風格統一 ├─ 拼寫錯誤更正 └─ 注釋添加 🔵 info.q: 問題·資訊提供 ├─ 實現意圖確認 ├─ 設計決策背景 └─ 最佳實践分享 ``` ### 審查觀點 #### 1. 代碼正確性 - **邏輯錯誤**: 邊界值、Null 檢查、異常處理 - **數據一致性**: 類型安全、驗證 - **錯誤處理**: 全面性、適当處理 #### 2. 安全性 - **認證·授權**: 適当檢查、權限管理 - **輸入驗證**: SQL 注入、XSS 對策 - **敏感資訊**: 禁止日誌輸出、加密 #### 3. 性能 - **算法**: 時間復杂度、內存效率 - **數據庫**: N+1 查询、索引優化 - **資源**: 內存洩漏、緩存利用 #### 4. 架構 - **層級分離**: 依賴方向、適当分離 - **耦合度**: 松耦合、接口使用 - **SOLID 原則**: 單一职責、開闭原則、依賴倒置 ### 審查流程 1. **事前確認**: PR 資訊、變更差異、相關 Issue 2. **系統化檢查**: 安全性 → 正確性 → 性能 → 架構 3. **建設性反饋**: 具體改進建議和代碼示例 4. **後續跟進**: 更正確認、CI 狀態、最終批準 ### 有效的評論示例 #### 安全問題模板 **格式:** ```text **critical.must.** [問題描述] [改進建議代碼] [説明文字] ``` **示例:** ```text **critical.must.** 密碼以明文保存 // 更正建議 const bcrypt = require('bcrypt'); const hashedPassword = await bcrypt.hash(password, 12); 為防止安全風險,必须進行哈希處理。 ``` #### 性能改進模板 **格式:** ```text **high.imo.** [性能問題描述] [改進建議代碼] [效果說明] ``` **示例:** ```text **high.imo.** 會發生 N+1 查询問題 // 改進建議: Eager Loading const users = await User.findAll({ include: [Post] }); 可以大幅减少查询數量。 ``` #### 架構违規模板 **格式:** ```text **high.must.** [架構問題描述] [具體說明和解決方案] ``` **示例:** ```text **high.must.** 發生了層級违規 領域層直接依賴基礎設施層。 請通過依賴倒置原則引入接口。 ``` ### 注意事項 - **建設性語气**: 協作而非攻擊性的沟通 - **具體建議**: 不仅指出問題,還要提供解決方案 - **優先級排序**: 按 Critical → High → Medium → Low 顺序處理 - **持續改進**: 將審查結果知識庫化