OpenSource-Hub

code-review-graph

CLI ツール

tirth8205/code-review-graph

AIコードレビューのための、ローカルファーストのコードインテリジェンスグラフ。

概要

Tree-sitter を使用してコードベースの永続的な構造グラフを構築します。変更を増分的に追跡し、MCP を通じて AI コーディングツールに正確なコンテキストを提供します。コードレビューにおけるトークン消費を大幅に削減します。

README プレビュー

code-review-graph\n\n\n  Stop burning tokens. Start reviewing smarter.\n\n\n\n  English |\n  简体中文 |\n  日本語 |\n  한국어 |\n  हिन्दी\n\n\n\n  \n  \n  \n  \n  \n  \n  \n  \n  \n\n\n\n  Usage ·\n  Commands ·\n  FAQ ·\n  Troubleshooting ·\n  GitHub Action ·\n  Reproducing the benchmarks ·\n  Roadmap\n\n\n\n\nAI coding tools can end up re-reading large parts of your codebase on review tasks. `code-review-graph` fixes that. It builds a structural map of your code with [Tree-sitter](https://tree-sitter.github.io/tree-sitter/), tracks changes incrementally, and gives your AI assistant precise context via [MCP](https://modelcontextprotocol.io/) so it reads only what matters.\n\n\n  \n\n\n---\n\n## Quick Start\n\n```bash\npip install code-review-graph                     # or: pipx install code-review-graph\ncode-review-graph install          # auto-detects and configures all supported platforms\ncode-review-graph build            # parse your codebase\n```\n\nOne command sets up everything. `install` detects which AI coding tools you have, writes the correct MCP configuration for each one, installs platform-native hooks/skills where supported, and injects graph-aware instructions into your platform rules. It auto-detects whether you installed via `uvx` or `pip`/`pipx` and generates the right config. Restart your editor/tool after installing.\n\n\n  \n\n\nTo target a specific platform:\n\n```bash\ncode-review-graph install --platform codex       # configure only Codex\ncode-review-graph install --platform cursor      # configure only Cursor\ncode-review-graph install --platform claude-code  # configure only Claude Code\ncode-review-graph install --platform gemini-cli   # configure only Gemini CLI\ncode-review-graph install --platform kiro         # configure only Kiro\ncode-review-graph install --platform copilot      # configure only GitHub Copilot (VS Code)\ncode-review-graph install --platform copilot-cli  # configure only GitHub Copilot CLI\ncode-review-graph install --platfo

FAQ (5)

トラブル対応
code-review-graph が Java の @Override メソッドや JUnit の @BeforeEach ライフサイクルメソッドをデッドコードとして報告するのはなぜですか?

code-review-graph 2.3.8 では、flows.py 内の _FRAMEWORK_DECORATOR_PATTERNS が Java の @Override や JUnit/TestNG のライフサイクルアノテーションを認識しないため、JDK コントラクトやテストランナーによって呼び出されるメソッドが誤ってデッドコードとして分類されます。

#1034 の修正を適用するか、以下のパターンを flows.py 内の _FRAMEWORK_DECORATOR_PATTERNS に手動で追加してください:

re.compile(r"^Override$"),
re.compile(
    r"^(Test|Before|After|BeforeEach|AfterEach|BeforeAll|AfterAll"
    r"|BeforeClass|AfterClass|ParameterizedTest|RepeatedTest|TestFactory)$"
),

その後、再ビルドして再実行してください:

code-review-graph build --repo . --data-dir /tmp/dc-data
code-review-graph dead-code --repo . --data-dir /tmp/dc-data

アンカー付きの Override パターンにより、override_settings のような無関係なアノテーションがマッチするのを防ぎます。パッチ適用後は、hashCode() と @BeforeEach setUp() が報告されなくなり、本当に使用されていないシンボルのみが引き続きフラグ付けされます。

参照 Issue #1032
トラブル対応
なぜ Windows では non-ASCII のソースファイルがコードレビューのスニペットで文字化けして表示されるのですか?また、どうすれば修正できますか?

ファイルは UTF-8 ではなく、Windows のシステムロケールのエンコーディング(通常は cp1252)でデコードされています。各 open() 呼び出しに encoding="utf-8" を明示的に渡して修正してください。errors="replace" は部分的な出力が望ましい場合にのみ残してください:

with open(path, encoding="utf-8", errors="replace") as f:
    source = f.read()

この修正を tools/review.py、tools/flows_tools.py、context_savings.py、token_benchmark.py、eval/runner.py、eval/reporter.py に適用してください。上流での修正は PR #928 にあり、#988 に統合され、マージ 3030ca8 に取り込まれています。次のリリースに含まれる予定です。Windows での一時的な回避策として、ツールを実行する前に Python UTF-8 モードを有効にしてください:

set PYTHONUTF8=1

PowerShell:

$env:PYTHONUTF8 = "1"

参照 Issue #926
トラブル対応
code-review-graph build で 2.3.8 より前の Windows グラフを再構築する際にノードが重複する問題は、どのように修正すればよいですか?

これは Windows 上の code-review-graph 2.3.8 に影響します。stale-file のパージ処理は、保存されているバックスラッシュ形式のパスを使って古い行を選択しますが、削除前にそれらを POSIX パスに正規化するため、何も削除されず、ビルドはすべてのノードを再び挿入します。

修正: PR #988 を含むリリースにアップグレードしてください(修正は staging にマージされ、2.3.8 の次のリリースに向けて対象となっています)。その後、再実行します:

code-review-graph build --repo . --data-dir <your-data-dir>

修正されたビルドは、正規の POSIX 行を保持しながら、保存されている正確な表記を使ってレガシー行を削除します。

まだアップグレードできない場合は、古いデータディレクトリを再利用する代わりに、新しいデータディレクトリに再ビルドしてください:

code-review-graph build --repo . --data-dir C:/tmp/graph-fresh

新しいデータベースを検証し、ツールをそこに向けるか、古いデータディレクトリを置き換えてください。正常な終了コードと通常の Full build ログ行は、2.3.8 で重複が回避されたことの証明にはなりません。

参照 Issue #911
トラブル対応
テストと `TESTED_BY` エッジを持つ Python コードに対して `code-review-graph tests_for` が 0 件の結果を返す問題を修正するにはどうすればよいですか?

これは code-review-graph 2.3.8 におけるバグです。Python の TESTED_BY エッジでは裸のシンボル名が使用される場合がありますが、tests_for は /abs/path/file.py::Class.method のような完全修飾パスで検索を行います。フォールバックでは絶対ファイルパスを odoo.addons.module.file のようなドット区切りの Python モジュール名と比較するため、インポートエビデンスのチェックが失敗し、カバーされているコードがカバーされていないと報告されてしまいます。

即時の回避策: callers_of を使用し、is_test=True とマークされている呼び出し元を特定してください:

code-review-graph query callers_of "/abs/path/wizard_update_invoice_supplierinfo_line.py::WizardUpdateInvoiceSupplierinfoLine._prepare_supplierinfo_update"

恒久的な修正: PR #960/#988 および PR #997 における Python のインポート解決の修正を含むリリースにアップグレードしてください。ソースからビルドする場合は、コミット 3030ca8 および 9c13f4c を含むビルドを使用するか、修正が main にマージされるまで staging からビルドしてください。この修正により、インポートエビデンスを比較する前にドット区切りの Python モジュールがリポジトリ内のファイルへと解決されるようになり、裸の名前によるフォールバックが既存の TESTED_BY エッジを見つけられるようになります。

参照 Issue #903
トラブル対応
git worktree で code-review-graph pre-commit hook が別個のグラフデータベースを作成しないようにするにはどうすればよいですか?

これは、インストールされたフックが --repo を指定せずに code-review-graph update を実行するために、code-review-graph 2.3.8 で発生します。リンクされたワークツリーから実行すると、リポジトリの検出がそのワークツリーに解決され、新しい .code-review-graph データベースが作成されます。

修正は PR #988(マージ 3030ca8)により staging で利用可能で、次のリリースに含まれる予定です。修正されたフックは --repo を渡し、CRG_HOOK_WORKTREES=1 が設定されていない限り、リンクされたワークツリーでの自動グラフチェックをスキップします。アップグレード後、フックを再インストールしてください:

code-review-graph install

2.3.8 での即時の回避策:

1. 共有フックを開きます:

$(git rev-parse --git-path hooks/pre-commit)

2. リンクされたワークツリーをスキップし、メインのチェックアウトを明示的に対象とするように変更します:

#!/bin/sh
if command -v code-review-graph >/dev/null 2>&1; then
  if [ "$(git rev-parse --git-dir)" = "$(git rev-parse --git-common-dir)" ]; then
    code-review-graph update --repo /absolute/path/to/main-checkout || true
    code-review-graph detect-changes --brief --repo /absolute/path/to/main-checkout || true
  fi
fi

3. ワークツリー内にすでに作成されたデータベースを削除します:

rm -rf /path/to/worktree/.code-review-graph

一度限りの代替方法として、ワークツリーで git commit --no-verify を使ってコミットし、その後メインの作業ツリーから code-review-graph update を実行してください。

参照 Issue #953