コンテンツにスキップ

OpenAI Codex /reviewコマンド実践:自動コードレビューをCI/CDに統合する方法

Codex CLI 完全ガイド

この記事は朝の記事のフォローアップです

朝の記事: OpenAI Codex 0.39.0アップデート

ゴール

  • /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への重要指摘の自動通知
  • 過去レビューの学習によるカスタムルール生成
  • 定期実行による技術的負債の可視化

次のステップ