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 소스 파일이 mojibake로 표시되는 이유는 무엇이며, 어떻게 해결할 수 있습니까?

파일이 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 purge) 과정에서 저장된 백슬래시 경로를 사용해 기존 행을 선택하지만, 삭제 전에 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
문제 해결
`code-review-graph tests_for`가 테스트와 `TESTED_BY` 엣지가 있는 Python 코드에 대해 0개의 결과를 반환하는 문제를 어떻게 해결하나요?

이것은 code-review-graph 2.3.8의 버그입니다. Python TESTED_BY 엣지는 단순 심볼 이름을 사용할 수 있는 반면, tests_for는 /abs/path/file.py::Class.method와 같은 완전 정규화된 경로를 조회합니다. 폴백은 절대 파일 경로를 odoo.addons.module.file과 같은 점으로 구분된 Python 모듈 이름과 비교하므로, import 증거 검사가 실패하고 커버된 코드가 커버되지 않은 것으로 보고됩니다.

즉시 적용 가능한 해결 방법: 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 import 해석 수정 사항이 포함된 릴리스로 업그레이드하세요. 소스에서 빌드하는 경우, 커밋 3030ca8과 9c13f4c가 포함된 빌드를 사용하거나, 수정 사항이 main에 병합될 때까지 staging에서 빌드하세요. 이 수정은 import 증거를 비교하기 전에 점으로 구분된 Python 모듈을 해당 리포지토리 파일로 해석하여, 단순 이름 폴백이 기존 TESTED_BY 엣지를 찾을 수 있게 합니다.

원본 Issue #903
문제 해결
git worktree에서 code-review-graph pre-commit 훅이 별도의 그래프 데이터베이스를 생성하지 않게 하려면 어떻게 해야 하나요?

이 문제는 설치된 hook이 --repo 없이 code-review-graph update를 실행하기 때문에 code-review-graph 2.3.8에서 발생합니다. 연결된 worktree에서는 저장소 탐색이 해당 worktree로 확인되어 새로운 .code-review-graph 데이터베이스가 생성됩니다.

수정 사항은 PR #988(머지 3030ca8)을 통해 staging에서 제공되고 있으며 다음 릴리스에 포함될 예정입니다. 수정된 hook은 --repo를 전달하며, CRG_HOOK_WORKTREES=1이 설정되지 않은 한 연결된 worktree에서 자동 그래프 검사를 건너뜁니다. 업그레이드 후 hook을 다시 설치하세요:

code-review-graph install

2.3.8에서 즉시 적용 가능한 해결 방법:

1. 공유 hook을 여세요:

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

2. 연결된 worktree를 건너뛰고 메인 체크아웃을 명시적으로 대상으로 지정하도록 수정하세요:

#!/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. worktree 내부에 이미 생성된 데이터베이스를 삭제하세요:

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

일회성 대안으로, worktree에서 git commit --no-verify로 커밋한 다음 메인 작업 트리에서 code-review-graph update를 실행하세요.

원본 Issue #953