# コードレビュー基準 ## 目的 コードレビューは、コードがマージされる前に品質、セキュリティ、保守性を確保します。このルールは、コードレビューの実施タイミングと方法を定義します。 ## レビューのタイミング **必須レビュートリガー:** - コードの作成または修正後 - 共有ブランチへのコミット前 - セキュリティに関わるコードが変更された場合(認証、決済、ユーザーデータ) - アーキテクチャの変更時 - プルリクエストのマージ前 **レビュー前の要件:** レビューを依頼する前に、以下を確認してください: - すべての自動チェック(CI/CD)が通過している - マージコンフリクトが解決されている - ブランチがターゲットブランチと最新状態である ## レビューチェックリスト コードを完了とマークする前に: - [ ] コードが読みやすく、適切に命名されている - [ ] 関数が焦点を絞っている(50行未満) - [ ] ファイルが凝集している(800行未満) - [ ] 深いネストがない(4レベル以上) - [ ] エラーが明示的に処理されている - [ ] ハードコードされたシークレットや認証情報がない - [ ] console.logやデバッグ文がない - [ ] 新機能にテストが存在する - [ ] テストカバレッジが最低80%を満たしている ## セキュリティレビュートリガー **以下の場合はsecurity-reviewerエージェントを使用してください:** - 認証または認可コード - ユーザー入力の処理 - データベースクエリ - ファイルシステム操作 - 外部APIコール - 暗号化操作 - 決済または金融コード ## レビュー重大度レベル | レベル | 意味 | アクション | |--------|------|------------| | CRITICAL | セキュリティ脆弱性またはデータ損失リスク | **BLOCK** - マージ前に修正必須 | | HIGH | バグまたは重大な品質問題 | **WARN** - マージ前に修正すべき | | MEDIUM | 保守性の懸念 | **INFO** - 修正を検討 | | LOW | スタイルまたは軽微な提案 | **NOTE** - 任意 | ## エージェントの使用 コードレビューには以下のエージェントを使用してください: | エージェント | 目的 | |-------------|------| | **code-reviewer** | 一般的なコード品質、パターン、ベストプラクティス | | **security-reviewer** | セキュリティ脆弱性、OWASP Top 10 | | **typescript-reviewer** | TypeScript/JavaScript固有の問題 | | **python-reviewer** | Python固有の問題 | | **go-reviewer** | Go固有の問題 | | **rust-reviewer** | Rust固有の問題 | ## レビューワークフロー ``` 1. git diffを実行して変更を理解する 2. セキュリティチェックリストを最初に確認する 3. コード品質チェックリストをレビューする 4. 関連するテストを実行する 5. カバレッジ >= 80%を検証する 6. 詳細レビューに適切なエージェントを使用する ``` ## よくある問題の検出 ### セキュリティ - ハードコードされた認証情報(APIキー、パスワード、トークン) - SQLインジェクション(クエリでの文字列連結) - XSS脆弱性(エスケープされていないユーザー入力) - パストラバーサル(未サニタイズのファイルパス) - CSRF保護の欠如 - 認証バイパス ### コード品質 - 大きな関数(50行超)- より小さく分割 - 大きなファイル(800行超)- モジュールを抽出 - 深いネスト(4レベル超)- 早期リターンを使用 - エラー処理の欠如 - 明示的に処理 - ミューテーションパターン - イミュータブルな操作を優先 - テストの欠如 - テストカバレッジを追加 ### パフォーマンス - N+1クエリ - JOINまたはバッチングを使用 - ページネーションの欠如 - クエリにLIMITを追加 - 制約のないクエリ - 制約を追加 - キャッシュの欠如 - 高コスト操作をキャッシュ ## 承認基準 - **承認**: CRITICALまたはHIGHの問題なし - **警告**: HIGHの問題のみ(注意してマージ) - **ブロック**: CRITICALの問題が検出 ## 他のルールとの統合 このルールは以下と連携します: - [testing.md](testing.md) - テストカバレッジ要件 - [security.md](security.md) - セキュリティチェックリスト - [git-workflow.md](git-workflow.md) - コミット規約 - [agents.md](agents.md) - エージェント委任