Files
2025-11-29 18:23:35 +08:00

170 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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インジェクション
- コマンドインジェクション
- XSSStored/Reflected/DOM-based
- LDAP/XMLインジェクション
- **入力検証とサニタイゼーション**
- ユーザー入力の検証不足
- ファイルアップロードの検証
- Content-Type検証
- サイズ制限の実装
- ホワイトリスト方式の採用
- **データ保護**
- 機密情報のログ出力
- 暗号化の適切な実装
- 安全でない乱数生成
- パスワードのハッシュ化bcrypt、Argon2等
- **API/ネットワークセキュリティ**
- CORS設定の安全性
- CSRF対策の実装
- Rate limiting の実装
- HTTPSの強制
- **依存関係のセキュリティ**
- 既知の脆弱性を持つライブラリ
- 最新版への更新の必要性
- **その他のセキュリティ**
- パストラバーサル脆弱性
- XXEXML 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が有効であること