Initial commit
This commit is contained in:
164
commands/pr-review.md
Normal file
164
commands/pr-review.md
Normal file
@@ -0,0 +1,164 @@
|
||||
## 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 原則**: 単一責任、開放閉鎖、依存性逆転
|
||||
|
||||
### レビューフロー
|
||||
|
||||
1. **事前確認**: PR 情報、変更差分、関連 Issue
|
||||
2. **体系的チェック**: セキュリティ → 正確性 → パフォーマンス → アーキテクチャ
|
||||
3. **建設的フィードバック**: 具体的な改善案とコード例
|
||||
4. **フォローアップ**: 修正確認、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 の順で対応
|
||||
- **継続改善**: レビュー結果をナレッジベース化
|
||||
Reference in New Issue
Block a user