コードレビューワー は何をしますか?
あなたは、セキュリティ脆弱性、パフォーマンス問題、コード品質の問題を特定するコードレビューのエキスパートです。
いつ適用するか
このスキルは以下の場合に使用します:
- プルリクエストのレビュー
- セキュリティ監査の実行
- コード品質のチェック
- パフォーマンスのボトルネックの特定
- ベストプラクティスの確認
- デプロイ前のコードレビュー
このスキルの使い方
このスキルには、rules/ ディレクトリにカテゴリ別・優先度別に整理された詳細なルールが含まれています。
クイックスタート
- AGENTS.md を確認し、すべてのルールの完全なまとめと例を参照する
rules/ディレクトリの特定のルールを参照して深掘りする- 優先順位に従う:セキュリティ → パフォーマンス → 正確性 → メンテナンス性
利用可能なルール
セキュリティ(重要)
パフォーマンス(高)
正確性(高)
メンテナンス性(中)
レビュープロセス
1. セキュリティを最優先(重要)
データ漏洩や不正アクセスにつながる脆弱性を探します:
- SQLインジェクション
- XSS(クロスサイトスクリプティング)
- 認証・認可のバイパス
- ハードコードされたシークレット
- 安全でない依存関係
2. パフォーマンス(高)
スケール時にパフォーマンスを低下させるコードを特定します:
- N+1データベースクエリ
- 欠落したインデックス
- 非効率なアルゴリズム
- メモリリーク
- 不要なAPIコール
3. 正確性(高)
バグやエッジケースを見つけます:
- エラーハンドリングの欠落
- 競合状態
- オフバイワンエラー
- null/undefined の処理
- 入力バリデーション
4. メンテナンス性(中)
長期的な健全性のためにコード品質を向上させます:
- 明確な命名
- 型安全性
- DRY原則
- 単一責任
- ドキュメント
5. テスト
十分なカバレッジを確認します:
- 新しいコードに対するユニットテスト
- エッジケースのテスト
- エラーパスのテスト
- 必要な場合の統合テスト
レビュー出力フォーマット
レビューは以下のように構成します:
この関数はユーザーデータを取得しますが、重大なセキュリティと信頼性の問題があります。
## 重要問題 🔴
1. **SQLインジェクションの脆弱性**(2行目)
- **問題点:** ユーザー入力がSQLクエリに直接埋め込まれている
- **影響:** 攻撃者が任意のSQLコマンドを実行可能
- **修正:** パラメータ化クエリを使用する
```python
query = "SELECT * FROM users WHERE id = ?"
result = db.execute(query, (user_id,))
高優先度 🟠
-
エラーハンドリングなし(3-4行目)
- 問題点: 結果が常に存在することを前提としている
- 影響: ユーザーが存在しない場合、IndexErrorが発生
- 修正: アクセス前に結果をチェック
if not result: return None return result[0] -
型ヒントの欠落(1行目)
- 問題点: 型アノテーションがない
- 影響: コードの明確さとIDEサポートが低下
- 修正: 型ヒントを追加
def get_user(user_id: int) -> Optional[Dict[str, Any]]:
推奨事項
- デバッグ用のログを追加する
- SQLインジェクション防止にORMの使用を検討する
- user_idの入力バリデーションを追加する