Initial commit
This commit is contained in:
170
commands/pr-review.md
Normal file
170
commands/pr-review.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# PRレビュー - 包括的なコードレビュー実行
|
||||
|
||||
指定されたPull Requestを詳細にレビューし、改善提案を行います。
|
||||
|
||||
## 使用方法
|
||||
`/pr-review <PR番号またはURL>`
|
||||
|
||||
例:
|
||||
- `/pr-review 123`
|
||||
- `/pr-review https://github.com/owner/repo/pull/123`
|
||||
|
||||
## 実行手順
|
||||
|
||||
### 1. PR情報の取得と検証
|
||||
- `gh pr view <PR番号> --json` でPR詳細情報を取得
|
||||
- タイトル、説明、作成者、ステータスを確認
|
||||
- ターゲットブランチとソースブランチの確認
|
||||
- 認証エラー時はフォールバック処理を実行
|
||||
|
||||
### 2. 変更内容の分析
|
||||
- `gh pr diff <PR番号>` で差分を取得
|
||||
- 変更されたファイル一覧を取得 (`gh pr view --json files`)
|
||||
- 追加・削除された行数の統計情報を収集
|
||||
- コミット履歴の確認 (`gh pr view --json commits`)
|
||||
|
||||
### 3. コードレビューの実施
|
||||
|
||||
#### 3.1 自動チェック項目
|
||||
|
||||
- **セキュリティ(最重要・厚めにチェック)**
|
||||
- **認証・認可**
|
||||
- ハードコードされた認証情報(API key, password, token等)
|
||||
- 認証トークンの安全な保管方法
|
||||
- 認可チェックの実装(権限検証の欠落)
|
||||
- セッション管理の安全性
|
||||
- **インジェクション攻撃**
|
||||
- SQLインジェクション脆弱性
|
||||
- NoSQLインジェクション
|
||||
- コマンドインジェクション
|
||||
- XSS(Stored/Reflected/DOM-based)
|
||||
- LDAP/XMLインジェクション
|
||||
- **入力検証とサニタイゼーション**
|
||||
- ユーザー入力の検証不足
|
||||
- ファイルアップロードの検証
|
||||
- Content-Type検証
|
||||
- サイズ制限の実装
|
||||
- ホワイトリスト方式の採用
|
||||
- **データ保護**
|
||||
- 機密情報のログ出力
|
||||
- 暗号化の適切な実装
|
||||
- 安全でない乱数生成
|
||||
- パスワードのハッシュ化(bcrypt、Argon2等)
|
||||
- **API/ネットワークセキュリティ**
|
||||
- CORS設定の安全性
|
||||
- CSRF対策の実装
|
||||
- Rate limiting の実装
|
||||
- HTTPSの強制
|
||||
- **依存関係のセキュリティ**
|
||||
- 既知の脆弱性を持つライブラリ
|
||||
- 最新版への更新の必要性
|
||||
- **その他のセキュリティ**
|
||||
- パストラバーサル脆弱性
|
||||
- XXE(XML External Entity)攻撃
|
||||
- サーバーサイドリクエストフォージェリ(SSRF)
|
||||
- 安全でないデシリアライゼーション
|
||||
|
||||
- **テストケース(重要・厚めにチェック)**
|
||||
- **テストカバレッジ**
|
||||
- 新規機能に対するテストの有無
|
||||
- 既存機能への影響範囲のテスト
|
||||
- エッジケースのカバー状況
|
||||
- エラーケースのテスト
|
||||
- **テストの種類と品質**
|
||||
- 単体テスト(Unit Test)の適切性
|
||||
- 統合テスト(Integration Test)の必要性
|
||||
- E2Eテストの必要性
|
||||
- テストの可読性と保守性
|
||||
- **テストケースの十分性**
|
||||
- 正常系のテスト
|
||||
- 異常系のテスト(バリデーションエラー、ネットワークエラー等)
|
||||
- 境界値テスト
|
||||
- 並行処理のテスト(該当する場合)
|
||||
- **セキュリティテスト**
|
||||
- 認証・認可のテスト
|
||||
- 入力検証のテスト
|
||||
- エラーハンドリングのテスト
|
||||
- **モックとテストデータ**
|
||||
- 外部依存のモック化
|
||||
- テストデータの適切性
|
||||
- テスト環境の分離
|
||||
- **パフォーマンステスト**
|
||||
- 負荷テストの必要性評価
|
||||
- レスポンスタイムの検証
|
||||
- **過剰なテストの検出**
|
||||
- 実装の詳細に依存しすぎたテスト(脆弱なテスト)
|
||||
- 重複したテストケース
|
||||
- 価値の低いテスト(自明な処理のテスト)
|
||||
- メンテナンスコストが高すぎるテスト
|
||||
- 不要にモックが多すぎるテスト
|
||||
|
||||
- **コード品質**
|
||||
- 命名規則の一貫性
|
||||
- 重複コードの検出
|
||||
- 複雑度の評価
|
||||
- デッドコードの検出
|
||||
|
||||
- **パフォーマンス**
|
||||
- N+1クエリの検出
|
||||
- 非効率なループ処理
|
||||
- 不要な再レンダリング(フロントエンド)
|
||||
- メモリリークの可能性
|
||||
|
||||
- **保守性**
|
||||
- 適切なコメントの有無
|
||||
- エラーハンドリングの実装
|
||||
- ログ出力の適切性
|
||||
- ドキュメントの更新
|
||||
|
||||
#### 3.2 プロジェクト固有のチェック
|
||||
- プロジェクトのコーディング規約への準拠
|
||||
- 既存のアーキテクチャとの整合性
|
||||
- 依存関係の適切な管理
|
||||
|
||||
### 4. レビュー結果のフォーマット
|
||||
|
||||
#### 4.1 サマリー
|
||||
- 全体的な評価(Approve/Request Changes/Comment)
|
||||
- 主要な問題点の要約
|
||||
- 良い点の強調
|
||||
|
||||
#### 4.2 詳細フィードバック
|
||||
各ファイルごとに:
|
||||
- 問題点の指摘(行番号付き)
|
||||
- 改善提案と具体的なコード例
|
||||
- 参考となるドキュメントやベストプラクティスへのリンク
|
||||
|
||||
#### 4.3 アクションアイテム
|
||||
- 必須の修正項目(ブロッカー)
|
||||
- 推奨される改善項目
|
||||
- 将来的な改善提案
|
||||
|
||||
### 5. GitHub上でのコメント投稿(オプション)
|
||||
- `gh pr comment` を使用してレビューコメントを投稿
|
||||
- 行単位のインラインコメント
|
||||
- 全体的なレビューコメント
|
||||
|
||||
## エラーハンドリング
|
||||
|
||||
### GitHub CLI認証エラー
|
||||
プライベートリポジトリで認証エラーが発生した場合:
|
||||
1. エラーメッセージを表示
|
||||
2. 手動でPRを確認するためのURLを提供
|
||||
3. 認証の再設定方法を案内:
|
||||
- `gh auth refresh -s repo,read:org`
|
||||
- GITHUB_TOKEN環境変数の確認
|
||||
|
||||
### API制限
|
||||
- レート制限に達した場合の待機処理
|
||||
- 部分的な結果での続行オプション
|
||||
|
||||
## 設定オプション
|
||||
- `--format`: 出力形式(markdown/json/html)
|
||||
- `--severity`: レビューの厳密さ(strict/normal/lenient)
|
||||
- `--focus`: 特定の観点に絞る(security/performance/style)
|
||||
- `--no-comment`: GitHubへのコメント投稿をスキップ
|
||||
|
||||
## 前提条件
|
||||
- GitHub CLIがインストールされ認証済みであること
|
||||
- 対象リポジトリへの読み取りアクセス権限
|
||||
- PR番号またはURLが有効であること
|
||||
Reference in New Issue
Block a user