code-review-graphとは:AIコードレビューの文脈を絞る仕組み
code-review-graphの仕組み、導入条件、向いている用途、注意点を整理します。
code-review-graphは、コードベースをグラフ化し、変更の影響範囲と関連ファイルをAIへ渡すための開発ツールです。リポジトリ全体を毎回読み込ませる代わりに、変更と関係が強い範囲へ文脈を絞ります。
何ができるのか
code-review-graphは、Tree-sitterでコードを解析し、関数、クラス、インポート、呼び出し、継承、テストとの関係をSQLiteへ保存します。AIコーディングツールからはMCPまたはCLI経由で参照できます。
対応先として、Claude Code、Codex、Cursor、Zed、Gemini CLI、GitHub Copilotなどが案内されています。GitHub Actionsへ組み込み、PRレビューに利用する構成もあります。
主な用途
変更の影響範囲を調べる
変更された関数から、呼び出し元、依存ファイル、関連テストをたどれます。複数ファイルへ影響する変更や、モノレポのレビューで確認範囲を絞る用途に向いています。
複数のAIツールで同じ構造情報を使う
MCPサーバーとCLIを提供しているため、複数のAIコーディングツールへ共通のコードグラフを渡せます。
読み込むコード量を減らす
公式ベンチマークでは、リポジトリ全体を読む場合と比べて、質問あたりのトークン量を大きく減らせると説明されています。ただし、実際の削減量はリポジトリ構成や質問内容によって変わります。
仕組み
処理の流れは次のとおりです。
- リポジトリをTree-sitterで解析する
- 関数、クラス、ファイルなどをノードとして保存する
- 呼び出し、インポート、継承、テスト関係をエッジとして保存する
- 変更された箇所と依存先を差分更新する
- AIへ関連範囲を返す
保存先は通常.code-review-graph/配下のSQLiteです。Neo4jなどの外部データベースは必須ではありません。
導入条件
- Python 3.10以上
pip、pipx、またはuv- 対象リポジトリへの読み取り権限
- GitHub Actionsで使う場合はPRコメントの書き込み権限
対応言語には、Python、JavaScript、TypeScript、Go、Rust、Java、C/C++、C#、Ruby、Kotlin、Swift、PHP、Vue、Svelte、Astro、Terraform、SQL、Jupyter Notebookなどが含まれます。
注意点
- 小さな単一ファイル変更では、グラフの情報が過剰になる場合がある
- 言語によって解析精度に差がある
- 影響候補には、実際には関係しないファイルが含まれる場合がある
- 埋め込み検索で外部APIを選ぶと、完全なローカル処理ではなくなる
- インストールコマンドはAIツール側の設定ファイルを書き換える場合がある
類似手段との違い
LSPは定義ジャンプや診断に強く、grepは識別子が分かっている調査に向いています。code-review-graphは、複数ファイルをまたぐ依存関係や変更の波及先をAIへ渡す用途に寄っています。
既存のLSPやgrepを置き換えるより、AIレビュー時の補助情報として組み合わせる使い方が現実的です。
向いている人
- 大規模リポジトリをAIでレビューしている
- モノレポで変更影響の確認範囲が広い
- 複数のAIコーディングツールを併用している
- PRレビュー時に関連テストや依存先を自動で出したい
- ソースコードをローカル中心で解析したい
小規模プロジェクトや、LSPとgrepだけで十分な環境では、導入とインデックス管理の手間が上回る可能性があります。
参照情報
- GitHub Repository: https://github.com/tirth8205/code-review-graph
- Release v2.3.7: https://github.com/tirth8205/code-review-graph/releases/tag/v2.3.7
- GitHub Action docs: https://github.com/tirth8205/code-review-graph/blob/main/docs/GITHUB_ACTION.md