代码审查图谱

tirth8205/code-review-graph 访问 GitHub ↗
🔤 Python ★ 30144 ⑂ 0 monthly #13 (+10738) 抓取 2026-08-15

一句话简介

一个基于 Python 的代码审查分析工具,通过图结构建模代码与审查关系,辅助开发者深入理解评审流程与代码变更。

标签

  • 代码审查
  • 图谱分析
  • Python
  • 静态分析
  • 开发者工具

适用应用场景

  • 追踪代码评审历史与评审人关系
  • 分析代码变更的影响范围
  • 辅助团队优化审查流程
  • 可视化代码模块间的依赖与审查链路

README 中文摘要

项目动机

AI 编程助手在执行代码审查任务时,常常需要反复读取大量代码文件,造成严重的 Token 浪费。code-review-graph 通过为代码库构建结构化图谱,让 AI 只读取真正相关的文件,从而显著降低上下文开销。在 fastapi 等大型项目中,整库读取需约 94.8 万 Token,而基于图谱的查询仅需约 2,653 Token,最高可达 376 倍压缩。

核心特性

  • 增量更新:仅重新解析 SHA-256 哈希变化的文件,钩子路径下约 2.5 秒可完成 3,000 文件项目中两文件的改动更新。
  • 多语言支持:覆盖 Python、JavaScript/TypeScript、Go、Rust、Java、C/C++、Ruby、Kotlin、Swift 等 30 余种语言,以及 Jupyter 笔记本、PHP Laravel 框架语义边、Terraform 结构等。
  • 爆炸半径分析:通过调用、继承、测试覆盖边追踪改动影响范围。
  • 语义搜索:支持 sentence-transformers、Google Gemini、OpenAI 兼容端点等多后端向量嵌入。
  • 知识图谱分析:包含 Louvain/Leiden 社区检测、枢纽与桥梁识别、惊讶度评分、知识缺口分析等功能。
  • 风险评分 PR 审查:以 GitHub Action 形式运行,发布粘性审查评论,可作为合并门槛。
  • 自定义语言:无需分叉代码,通过 .code-review-graph/languages.toml 即可添加新语言映射。

技术架构

代码库经 Tree-sitter 解析为 AST,提取函数、类、导入、调用点等节点,构建以节点和边构成的图谱(节点表示实体,边表示调用、继承、测试覆盖等关系),底层存储采用 SQLite 文件。审查时根据图谱计算改动文件的爆炸半径,返回最小必要文件集。

快速开始

pip install code-review-graph                     # 安装
code-review-graph install          # 自动检测并配置所有支持的 AI 平台
code-review-graph build            # 解析代码库

支持的目标平台包括 Codex、Claude Code、Cursor、Windsurf、Zed、Continue、OpenCode、Antigravity、Gemini CLI、Qwen、Qoder、Kiro、GitHub Copilot 等。若需指定单个平台,可使用 --platform <名称> 参数,例如 code-review-graph install --platform cursor。需要 Python 3.10 及以上环境,推荐安装 uv 以便 MCP 配置走 uvx 路径。

卸载命令示例:

code-review-graph uninstall --dry-run    # 预览删除动作,不写盘
code-review-graph uninstall --yes        # 直接执行
code-review-graph uninstall --keep-data  # 移除集成但保留图数据库

关键 CLI 与 MCP 用法

命令 功能
code-review-graph build 解析整个代码库
code-review-graph update 增量更新(仅解析改动文件)
code-review-graph detect-changes --brief 只读查询,展示 Token 节省面板
code-review-graph update --brief 刷新图谱后展示同一面板
code-review-graph watch 文件变更时自动更新图谱
code-review-graph visualize --format graphml 导出 GraphML 供 Gephi/yEd 使用
code-review-graph serve 启动 MCP 服务器

detect-changes --briefupdate --brief 输出同一 Token 节省面板,区别在于是否先刷新图谱:

┌─────────────────────── Token Savings ────────────────────────┐
│ Full context would be:     12,921 tokens                     │
│ Graph context used:           762 tokens                     │
│ Saved:                     12,159 tokens (~94%)              │
└──────────────────────────────────────────────────────────────┘

可在任一命令后追加 --verify 参数,基于 OpenAI cl100k_base 分词器交叉校验,结果通常在约 1% 误差范围内。MCP 工具 get_impact_radiusget_review_contextdetect_changesget_architecture_overview 的 JSON 响应同样附带 context_savings 元数据。

GitHub Action 配置

# .github/workflows/code-review-graph.yml
on:
  pull_request:
permissions:
  contents: read
  pull-requests: write
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: tirth8205/code-review-graph@v2.3.6
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

Action 在 CI 环境中完全本地构建与查询图谱,无需将源代码发送至外部服务;可选 fail-on-risk 输入将其转化为合并门槛。

多仓库守护进程

若编辑器不支持钩子(如 Cursor、OpenCode),可使用 crg-daemon 在后台守护多个仓库的图谱更新:

crg-daemon add ~/project-a --alias proj-a    # 注册仓库
crg-daemon start                              # 启动守护进程
crg-daemon status                             # 查看状态

配置文件位于 ~/.code-review-graph/watch.toml,守护进程每 30 秒执行健康检查并自动重启失效的监控进程。

性能基准

测试覆盖 6 个真实开源仓库:中位单问题 Token 压缩约 65 倍(区间 36–376 倍),爆炸半径分析 F1 平均 0.693(精确率偏低以换取高召回,属有意的保守策略)。需要注意的是当前评测中「召回 1.0」基于图谱自身派生的基准,属于理论上界;尚待修复的协同改动模式目前返回 0,不作为引用依据。

摘要更新于 2026-08-06 00:33:56 · 原文 43100 字符 · md5 6caa94fd0849…