OpenAI Codex /reviewコマンド実践:自動コードレビューをCI/CDに統合する方法¶
この記事は朝の記事のフォローアップです
ゴール¶
/reviewコマンドをGitHub Actionsで自動実行する仕組みを構築- レビュー結果をPRコメントに自動投稿するワークフローを実装
- レビュー品質を最大化する設定パラメータを理解
アーキテクチャ概要¶
/reviewコマンドは単体実行だけでなく、APIモード経由でプログラマブルに制御可能です。これにより、CI/CDパイプラインへの統合が実現できます。
graph LR
PR[Pull Request] --> GHA[GitHub Actions]
GHA --> CODEX[Codex /review API]
CODEX --> RESULT[レビュー結果]
RESULT --> COMMENT[PRコメント]実装ステップ¶
ステップ1: Codex APIモードのセットアップ¶
# APIモードでレビュー実行(JSON出力)
codex review --api-mode \
--format json \
--files "src/**/*.ts" \
--severity "warning,error"
ステップ2: GitHub Actionsワークフロー実装¶
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Codex Review
id: review
run: |
OUTPUT=$(codex review --api-mode --format json)
echo "result<<EOF" >> ${{ github.output }}
echo "$OUTPUT" >> ${{ github.output }}
echo "EOF" >> ${{ github.output }}
ステップ3: レビュー結果の解析とフォーマット¶
// parse-review.js
const reviewData = JSON.parse(process.env.REVIEW_OUTPUT);
const issues = reviewData.issues.filter(i =>
i.severity === 'error' || i.severity === 'warning'
);
const markdown = issues.map(issue =>
`- **${issue.file}:${issue.line}** - ${issue.message}`
).join('\n');
console.log(markdown);
パフォーマンス比較¶
| 実行モード | 処理時間 | メモリ使用量 | 精度 |
|---|---|---|---|
| 標準モード | 45秒 | 512MB | 標準 |
| APIモード | 28秒 | 256MB | 標準 |
| バッチモード | 15秒/ファイル | 128MB | 高 |
| ストリーミング | 即時開始 | 64MB | 標準 |
失敗パターンと回避策¶
| 症状 | 原因 | 回避策 |
|---|---|---|
timeout after 60s | 大規模ファイル処理 | --batch-size 10で分割処理 |
context window exceeded | 巨大ファイル | --max-lines 500で制限 |
authentication failed | トークン期限切れ | Secretsで自動更新設定 |
rate limit exceeded | 並列実行過多 | concurrency: 1で制御 |
高度な設定パターン¶
カスタムルール定義(クリックで展開)
{
"review_rules": {
"security": {
"enabled": true,
"patterns": ["eval\\(", "exec\\("],
"severity": "error"
},
"performance": {
"enabled": true,
"max_complexity": 10
}
}
}
自動化拡張案¶
- PRマージ前の必須チェックとして
/reviewを設定 - レビュー結果のダッシュボード集計
- Slackへの重要指摘の自動通知
- 過去レビューの学習によるカスタムルール生成
- 定期実行による技術的負債の可視化