// Automated code review with security, performance, and best practices analysis. Use when reviewing pull requests or analyzing code for vulnerabilities, performance issues, or maintainability concerns.
| name | code-reviewer |
| description | Automated code review with security, performance, and best practices analysis. Use when reviewing pull requests or analyzing code for vulnerabilities, performance issues, or maintainability concerns. |
コードレビューを自動化し、包括的なフィードバックを提供するスキルです。
このスキルは、プルリクエストや個別のコードファイルに対して、プロフェッショナルなコードレビューを実施します。セキュリティ、パフォーマンス、保守性、ベストプラクティスの観点から詳細な分析を行い、具体的な改善提案を提供します。
その他50以上の言語に対応
このファイルをレビューしてください:
[ファイルパスまたはコード]
以下のPRをレビュー:
変更内容: [変更の説明]
ファイル: [変更されたファイルのリスト]
重点項目:
- セキュリティ
- パフォーマンス
- コードの可読性
セキュリティの観点からこのコードをレビュー:
- SQL インジェクション
- XSS 脆弱性
- 認証・認可の問題
- 機密情報の漏洩
このレガシーコードのリファクタリング提案:
- モダンな書き方への変換
- パフォーマンス改善
- テスタビリティ向上
チェック項目:
出力例:
## セキュリティ問題
### [CRITICAL] SQL インジェクション脆弱性
**場所**: user_controller.py:45
**問題**: ユーザー入力を直接SQLクエリに連結しています
**影響**: データベースの不正アクセス、データ漏洩の可能性
**現在のコード**:
```python
query = f"SELECT * FROM users WHERE username = '{username}'"
cursor.execute(query)
推奨される修正:
query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (username,))
### 2. パフォーマンス
**チェック項目**:
- アルゴリズムの時間計算量
- 不要なループやネスト
- データベースクエリの最適化(N+1問題)
- メモリリークの可能性
- 非効率なデータ構造
- キャッシュの活用
- 遅延読み込み
- バッチ処理の機会
- 非同期処理の活用
**出力例**:
```markdown
## パフォーマンス改善
### [HIGH] N+1クエリ問題
**場所**: blog_service.ts:78-85
**問題**: ループ内でデータベースクエリを実行しています
**影響**: 100記事で101回のクエリが実行され、レスポンス時間が大幅に増加
**現在のコード**:
```typescript
for (const post of posts) {
post.author = await db.users.findById(post.authorId);
}
推奨される修正:
const authorIds = posts.map(p => p.authorId);
const authors = await db.users.findByIds(authorIds);
const authorMap = new Map(authors.map(a => [a.id, a]));
posts.forEach(post => post.author = authorMap.get(post.authorId));
効果: クエリ数が101回→2回に削減、レスポンス時間50-90%改善
### 3. コード品質
**チェック項目**:
- 命名規則の一貫性
- 関数の単一責任原則
- DRY原則(重複の排除)
- マジックナンバーの除去
- コメントの適切性
- エラーハンドリング
- 型安全性
- null/undefined チェック
- コードの複雑度(サイクロマティック複雑度)
**出力例**:
```markdown
## コード品質
### [MEDIUM] 関数が長すぎる(単一責任原則違反)
**場所**: order_processor.java:120-280
**問題**: processOrder() が160行あり、複数の責務を持っています
**リファクタリング提案**:
```java
// 現在: 1つの長い関数
public void processOrder(Order order) {
// 検証ロジック (20行)
// 在庫チェック (30行)
// 支払い処理 (40行)
// 通知送信 (25行)
// ロギング (15行)
// データベース更新 (30行)
}
// 推奨: 分割された関数
public void processOrder(Order order) {
validateOrder(order);
checkInventory(order);
processPayment(order);
sendNotifications(order);
updateDatabase(order);
logOrderProcessing(order);
}
効果: テスタビリティ向上、保守性改善、再利用性向上
### 4. アーキテクチャとデザインパターン
**チェック項目**:
- SOLID原則の適用
- デザインパターンの適切な使用
- レイヤーの分離(関心の分離)
- 依存性注入
- インターフェースの設計
- モジュール性
- スケーラビリティ
- 拡張性
### 5. テスト
**チェック項目**:
- テストの存在
- テストカバレッジ
- テストの品質(AAA パターン)
- エッジケースのカバー
- モックの適切な使用
- テストの独立性
- テストの可読性
### 6. エラーハンドリングとロギング
**チェック項目**:
- 適切な例外処理
- エラーメッセージの明確性
- スタックトレースの保持
- リソースのクリーンアップ
- ロギングレベルの適切性
- 機密情報の非ログ化
### 7. ドキュメンテーション
**チェック項目**:
- コメントの適切性
- API ドキュメント
- 複雑なロジックの説明
- TODO/FIXME の管理
- README の充実度
## レビュー出力形式
### 標準レビューレポート
```markdown
# コードレビュー結果
## サマリー
- **総合評価**: B+ (良好)
- **Critical問題**: 0件
- **High問題**: 2件
- **Medium問題**: 5件
- **Low問題**: 8件
- **改善提案**: 12件
## 重要な問題
### [HIGH] セキュリティ: CSRF保護の欠如
**ファイル**: api/routes.py:45-67
**説明**: POSTエンドポイントにCSRF保護がありません
**推奨**: FlaskのCSRF保護を有効化
**優先度**: 即時対応推奨
### [HIGH] パフォーマンス: 同期的なファイルI/O
**ファイル**: upload_handler.js:89
**説明**: 大きなファイルを同期的に読み込んでいます
**影響**: サーバーブロッキング、タイムアウトの可能性
**推奨**: 非同期I/Oまたはストリーミング処理に変更
## 改善提案
### コード重複の削減
3つのコントローラーで類似の検証ロジックが重複しています。
共通のバリデーターユーティリティの作成を推奨します。
### 型安全性の向上
TypeScriptの`any`型が15箇所で使用されています。
適切な型定義またはインターフェースの作成を推奨します。
## ベストプラクティス
✅ 適切に実装されている点:
- エラーハンドリングが適切
- 一貫した命名規則
- ユニットテストのカバレッジ良好(85%)
## 推奨アクション
1. **即時対応** (Critical/High):
- CSRF保護の実装
- 非同期I/Oへの変更
2. **短期対応** (Medium):
- コード重複の削減
- 型安全性の向上
- 複雑な関数のリファクタリング
3. **長期改善** (Low):
- ドキュメント拡充
- テストカバレッジ向上
- コードコメント改善
== の代わりに === を使用var の代わりに const/let を使用any の過度な使用回避with 文によるリソース管理プロジェクト固有のルールを定義可能:
カスタムレビュールール:
- すべてのAPI エンドポイントにレート制限を実装
- データベース移行はロールバック可能に
- すべての公開関数にJSDocコメント必須
- エラーレスポンスは標準フォーマットに従う
# .github/workflows/code-review.yml
name: Automated Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Code Review
run: |
# Claude による自動レビュー
claude-code review --pr ${{ github.event.pull_request.number }}
#!/bin/bash
# .git/hooks/pre-commit
claude-code review --staged --quick
入力:
以下のPRをレビューしてください:
タイトル: ユーザー認証機能の追加
変更ファイル:
- src/auth/login.ts (新規)
- src/auth/jwt.ts (新規)
- src/middleware/auth.ts (新規)
- src/routes/api.ts (変更)
変更内容:
- JWT ベースの認証を実装
- ログインエンドポイントを追加
- 認証ミドルウェアを作成
出力: セキュリティ、トークン管理、エラーハンドリングの包括的レビュー
入力:
このバグ修正をレビュー:
問題: ユーザーリストの読み込みが遅い
修正内容: クエリの最適化とキャッシング追加
出力: パフォーマンス改善の検証、キャッシュ戦略の評価、エッジケースの確認
入力:
このリファクタリングをレビュー:
変更: 500行の関数を10個の小さな関数に分割
目的: 保守性とテスタビリティの向上
出力: SOLID原則の適用状況、命名の適切性、モジュール分割の妥当性
使用例:
このPRをレビューしてください:
ファイル: src/payment/processor.py
変更内容: クレジットカード決済処理の実装
重点チェック項目:
- セキュリティ(カード情報の取り扱い)
- エラーハンドリング
- トランザクション管理
- PCI DSS 準拠
このプロンプトで、包括的なコードレビューレポートが生成されます!