PR Review
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 原則: 単一責任、開放閉鎖、依存性逆転
レビューフロー
- •事前確認: PR 情報、変更差分、関連 Issue
- •体系的チェック: セキュリティ → 正確性 → パフォーマンス → アーキテクチャ
- •建設的フィードバック: 具体的な改善案とコード例
- •フォローアップ: 修正確認、CI 状態、最終承認
コメントテンプレート
セキュリティ問題テンプレート
形式:
- •重要度:
critical.must. - •問題: 明確に記述
- •コード例: 修正案を提示
- •理由: なぜ必要か説明
例:
text
critical.must. パスワードが平文で保存されています
修正案:
const bcrypt = require('bcrypt');
const hashedPassword = await bcrypt.hash(password, 12);
セキュリティリスクを防ぐためハッシュ化が必須です。
パフォーマンス改善テンプレート
形式:
- •重要度:
high.imo. - •問題: パフォーマンス影響を説明
- •コード例: 改善案を提示
- •効果: 期待される改善を記述
例:
text
high.imo. N+1 クエリ問題が発生します
改善案: Eager Loading
const users = await User.findAll({ include: [Post] });
クエリ数を大幅に削減できます。
アーキテクチャ違反テンプレート
形式:
- •重要度:
high.must. - •問題: アーキテクチャ原則違反を指摘
- •推奨: 具体的な改善方法
例:
text
high.must. レイヤー違反が発生しています ドメイン層がインフラ層に直接依存しています。 依存性逆転の原則でインターフェースを導入してください。
注意事項
- •建設的トーン: 攻撃的ではなく協調的なコミュニケーション
- •具体的提案: 問題の指摘だけでなく解決案を提示
- •優先度付け: Critical → High → Medium → Low の順で対応
- •継続改善: レビュー結果をナレッジベース化