Skip to main content

VCode Analysis

基于私有化部署大模型的智能代码分析工具。兼容 OpenAI API 格式,支持代码审查、文档生成、架构分析和安全扫描。

特性

  • 代码审查 — 1-10 评分 + 问题定位 + 改进建议
  • 批量分析 — 智能打包多文件为单次 API 调用,减少 85%+ 请求量
  • 双层缓存 — 内存 LRU + 磁盘持久化,二次分析减少 98% 调用
  • 多模型降级 — 配置多个 LLM 模型,自动故障降级与冷却恢复
  • 安全扫描 — 正则规则引擎 + LLM 深度语义分析
  • 架构分析 — 模块识别、依赖关系、耦合度评估
  • 重复代码检查 — 多维检测(完全/近似 × 代码块/函数 × 文件内/跨文件)+ 修改建议
  • 文档生成 — 模块文档 / API 文档 / README 自动生成
  • 知识图谱 — 自动构建代码库领域模型(实体、关系、业务规则)
  • 多语言解析 — Python/Java AST、Kotlin/C 双模式、JS/TS/Vue 正则
  • 上下文增强 — 自动构建项目依赖关系,提升分析质量
  • Git 集成 — 单仓库 + 批量多仓库操作
  • 交互式报告 — Markdown + HTML(排序、筛选、折叠)
  • JSON 容错 — 自动修复 LLM 输出中的 JSON 格式问题(尾随逗号、代码块包裹等)
  • 量化指标 — 漏洞检出率、误报率、修复采纳率,SQLite 持久化存储
  • 反馈闭环 — 开发者标记误报/确认/修复,驱动规则调优与 LLM 提示词优化
  • MCP Server — Tool/Resource/Prompt 三能力注册,无缝接入 AI 工具链

安装

# 使用 pip
pip install vcode-analysis

# 或使用 uvx 直接运行
uvx vcode-analysis review ./src

可选依赖

# Java AST 解析
pip install javalang

# C 语言精确解析
pip install pycparser

# 富文本终端输出
pip install rich

# MCP Server(接入 AI 工具链)
pip install vcode-analysis[mcp]

快速开始

1. 配置 LLM 服务

# 方式一:环境变量
export OPENAI_API_BASE=http://localhost:8000/v1
export OPENAI_API_KEY=sk-your-key

# 方式二:配置文件
vcode-analysis config --init
# 编辑 ~/.code-analysis/config.yaml

# 方式三:命令行参数
vcode-analysis review ./src --base-url http://localhost:8000/v1 --model qwen35-35b-a3b

2. 代码审查

# 审查目录(默认启用批量+缓存)
vcode-analysis review ./src

# 审查单个文件
vcode-analysis review ./src/main.py

# 指定输出路径(默认生成 Markdown 报告,并自动生成同目录 .html 交互报告)
vcode-analysis review ./src -o report.md

# 启用上下文增强(提升分析质量)
vcode-analysis review ./src --context

# 审查 Git 提交(结果默认保存到 result/ 目录,-o 可指定路径)
vcode-analysis review-commit abc1234

3. 其他分析

# 生成文档
vcode-analysis doc ./src --type module
vcode-analysis doc ./src --type api
vcode-analysis doc ./src --type readme

# 架构分析
vcode-analysis arch ./src

# 重复代码检查(多维分析 + 修改建议)
vcode-analysis dup ./src
vcode-analysis dup ./src --min-lines 10       # 只报告 ≥10 行的重复
vcode-analysis dup ./src --min-similarity 0.9 # 提高近似重复判定门槛
vcode-analysis dup ./src --llm                # LLM 生成统一重构方案
vcode-analysis dup ./src --format json        # JSON 格式输出

# 安全扫描
vcode-analysis security ./src
vcode-analysis security ./src --deep    # LLM 深度扫描

# 目录扫描
vcode-analysis scan-dir ./src

# 知识图谱
vcode-analysis kg ./src
vcode-analysis kg ./src --format json    # JSON 格式输出
vcode-analysis kg ./src --llm           # LLM 增强分析
vcode-analysis kg ./src --workers 3     # 并发解析

重复代码检查的多个分析维度:

维度 取值 说明
重复类型 exact / near 完全重复 / 近似重复(标识符、字面量、数字归一化后结构一致)
检测粒度 block / function 代码块级(任意语言)/ 函数级(Python AST 整函数比对)
作用范围 intra_file / cross_file 文件内重复 / 跨文件重复(修复需多处方同步,风险更高)
影响评估 相似度/重复行数/重复率/严重度 按 high/medium/low 排序,并输出"重灾区"文件 Top10
修改建议 启发式 + 可选 LLM 抽取公共模块/提取辅助函数/参数化/合并方法等,--llm 生成统一重构方案

4. 量化指标与反馈闭环

# 查询量化指标(检出率、误报率、修复率)
vcode-analysis metrics . --from 2026-01-01 --to 2026-12-31
vcode-analysis metrics . --group-by rule_id --format json

# 标记问题状态(驱动规则调优)
vcode-analysis feedback <issue-id> --status false_positive --note "误报原因"
vcode-analysis feedback <issue-id> --status confirmed
vcode-analysis feedback <issue-id> --status fixed

# 查看待复核问题
vcode-analysis feedback pending --limit 20

# 批量导入反馈
vcode-analysis feedback import feedback.json

# 启用指标采集(review/security 命令加 --metrics)
vcode-analysis review ./src --metrics
vcode-analysis security ./src --metrics

5. MCP Server

# 安装 MCP 依赖
pip install vcode-analysis[mcp]

# stdio 模式(本地 AI 工具链集成)
vcode-mcp

# HTTP 模式(远程部署)
vcode-mcp --transport streamable-http --port 8765

MCP Server 提供 8 个 Tool、3 个 Resource、3 个 Prompt:

类型 名称 说明
Tool review 代码审查
Tool security 安全扫描
Tool arch 架构分析
Tool doc 文档生成
Tool dup 重复代码检查
Tool kg 知识图谱
Tool scan_dir 目录扫描
Tool feedback 反馈标记
Tool metrics 指标查询
Resource vcode://reports/{run_id} 历史报告
Resource vcode://rules/{rule_id} 规则定义
Resource vcode://metrics/summary 指标汇总
Prompt code-review-checklist 代码审查清单
Prompt vuln-tuning-advisor 规则调优顾问
Prompt mr-review-template MR 审查模板

6. Git 操作

# 克隆并分析(结果默认保存到 result/ 目录,-o 可指定路径)
vcode-analysis clone https://github.com/user/repo.git

# 克隆后自动执行代码审查并保存报告
vcode-analysis clone https://github.com/user/repo.git --analyze

# 批量克隆(从文件读取 URL 列表)
vcode-analysis batch-clone repos.txt ./workspace

# 批量拉取
vcode-analysis batch-pull ./workspace

# 多仓库状态
vcode-analysis git-status ./workspace

Web 操作台(可视化)

提供浏览器操作界面,无需记忆 CLI 命令即可启动分析、查看结果、标记反馈、管理配置与查看指标:

# 安装 Web 依赖(如已用 uv:uv add fastapi "uvicorn[standard]")
pip install fastapi "uvicorn[standard]"

# 启动(默认 http://127.0.0.1:8970)
python web/app.py

# 局域网共享:python web/app.py --host 0.0.0.0 --port 8970
  • 控制台:选路径 + 分析类型 + 高级选项,一键运行,实时进度/日志
  • 分析结果:问题明细 + 严重度筛选 + 在线标记「误报/确认/已修复」
  • 模型配置:可视化编辑 LLM 参数并自动写入 config.yaml,内置连通性测试
  • 指标看板:累计问题 / 误报率 / 修复率 + 规则与严重度分布图

详见 web/README.md。

命令参考

vcode-analysis review <path>              代码审查
vcode-analysis review-commit <commit>     审查指定提交
vcode-analysis doc <path>                 生成文档
vcode-analysis arch <path>                架构分析
vcode-analysis security <path>            安全扫描
vcode-analysis dup <path>                 重复代码检查
vcode-analysis kg <path>                  知识图谱生成
vcode-analysis clone <url>                克隆仓库并分析
vcode-analysis batch-clone <file> <dir>   批量克隆
vcode-analysis batch-pull <dir>           批量拉取
vcode-analysis git-status <dir>           多仓库状态
vcode-analysis scan-dir <path>            目录扫描
vcode-analysis metrics <path>             量化指标查询
vcode-analysis feedback <issue-id>        反馈管理
vcode-analysis config [--init|--show]     配置管理

全局选项

选项 说明 默认值
-c, --config 配置文件路径 ~/.code-analysis/config.yaml
--base-url LLM API 地址 http://localhost:8000/v1
--api-key API 密钥 sk-dummy
-m, --model 模型名称 qwen35-35b-a3b
--max-tokens 最大输出 Token 4096
--timeout 请求超时(秒) 180
-o, --output 输出文件路径 自动生成
-f, --format 输出格式(markdown/json/html) markdown
-w, --workers 并发线程数 5
--context 启用上下文增强 关闭
--no-cache 禁用缓存 关闭
--no-batch 禁用批量分析 关闭
--metrics 启用指标采集 关闭
--from <date> 起始日期(metrics) 2000-01-01
--to <date> 截止日期(metrics) 2099-12-31
--group-by <field> 分组字段(metrics) rule_id
--status <status> 问题状态(feedback) -
--note <text> 备注(feedback) -

配置文件

~/.code-analysis/config.yaml:

单模型配置

llm:
  base_url: "http://localhost:8000/v1"
  api_key: "sk-your-key"
  model: "qwen35-35b-a3b"
  temperature: 0.7
  max_tokens: 8192
  timeout: 180
  # 自定义请求头:调用 LLM 时附加到 HTTP 头(可覆盖默认头)
  custom_headers:
    X-Tenant: "tenant-a"
    X-Trace-Id: "trace-001"
  # 聊天请求路径(base_url 后的 path,默认 /chat/completions)
  chat_path: "/chat/completions"

analysis:
  max_file_size: 102400
  max_workers: 5
  ignore_patterns:
    - "custom_ignore/**"
  supported_extensions:
    - ".py"
    - ".java"
    - ".kt"

cache:
  ttl: 604800
  memory_cache_size: 1000

duplication:
  min_block_lines: 6        # 代码块最小重复行数
  min_similarity: 0.8       # 近似重复最低相似度
  min_function_lines: 6     # 函数级检测最小函数体行数
  enable_function_level: true

metrics:
  enabled: true
  db_path: "~/.code-analysis/metrics.db"

feedback:
  http_port: 8766
  auto_start_server: false

mcp:
  transport: "stdio"
  http_port: 8765
  auth_token: ""

多模型配置(故障自动降级)

配置多个 LLM 模型时,主模型请求失败会自动降级到备用模型:

llm:
  cooldown_seconds: 300        # 故障模型冷却期(秒)
  max_retries_per_model: 1     # 单模型最多重试次数
  models:
    - base_url: "http://localhost:8000/v1"
      api_key: "sk-primary"
      model: "qwen35-35b-a3b"
      temperature: 0.7
      max_tokens: 8192
    - base_url: "http://localhost:8001/v1"
      api_key: "sk-backup"
      model: "kimi-latest"
      temperature: 0.7
      max_tokens: 8192

降级策略:

  • 可降级错误:超时、连接错误、5xx、429 限流、401 认证失败
  • 不可降级错误:客户端请求格式错误等,直接抛出异常
  • 冷却恢复:失败模型进入冷却期,冷却结束后自动恢复可用

环境变量

变量 说明
OPENAI_API_BASE / OPENAI_BASE_URL LLM API 地址
OPENAI_API_KEY API 密钥
CODE_ANALYSIS_MODEL 模型名称
CODE_ANALYSIS_TEMPERATURE 温度参数
CODE_ANALYSIS_MAX_TOKENS 最大输出 Token

支持的语言

语言 扩展名 解析方式
Python .py AST
Java .java AST (javalang)
Kotlin .kt, .kts 双模式 (fast/precise)
C .c, .h 双模式 (fast/precise)
C++ .cpp, .hpp, .cc, .cxx 正则
JavaScript .js, .jsx 正则
TypeScript .ts, .tsx 正则
Vue .vue 正则
Go .go 正则
Rust .rs 正则
配置文件 .json, .yaml, .yml 文本
Markdown .md 文本

批量分析原理

100 个 Python 文件
    │
    ▼  按语言分组 + Token 估算
    │
    ├── 批次 1: file_01.py + file_03.py + file_07.py  (~7500 tokens)
    ├── 批次 2: file_02.py + file_05.py               (~6000 tokens)
    ├── ...
    └── 批次 15: file_98.py + file_99.py              (~5000 tokens)
    │
    ▼  每批合并为一次 API 调用
    │
    100 次 → ~15 次 API 调用(减少 85%)

二次分析(10 个文件变更):缓存命中 90 个文件,仅分析 10 个 → ~2 次调用(减少 98%)。

项目结构

code-analysis/
├── cli.py                     CLI 入口
├── core/                      核心模块
│   ├── analyzer.py            分析引擎
│   ├── llm_client.py          LLM 客户端(单模型 + 故障降级)
│   ├── config.py              配置管理(多模型 + metrics/feedback/mcp)
│   ├── ignore.py              过滤规则
│   ├── git_handler.py         Git 操作
│   ├── batch_planner.py       批量规划
│   ├── batch_analyzer.py      批量分析
│   ├── cache_manager.py       缓存管理
│   ├── token_estimator.py     Token 估算
│   ├── json_utils.py          JSON 解析容错
│   ├── metrics_store.py       量化指标采集(SQLite)
│   ├── feedback_hub.py        反馈接收 HTTP 服务
│   └── report_generator.py    报告生成(Markdown + 交互式 HTML + 反馈按钮)
├── analyzers/                 分析器
│   ├── code_review.py         代码审查(集成指标落库 + 调优提示词注入)
│   ├── documentation.py       文档生成
│   ├── architecture.py        架构分析
│   ├── security.py            安全扫描(集成指标落库 + 抑制条件)
│   ├── duplication.py         重复代码检查(多维分析 + 修改建议)
│   ├── directory.py           目录分析
│   ├── context_builder.py     上下文构建
│   └── knowledge_graph.py     知识图谱
├── vcode_mcp/                 MCP Server
│   ├── server.py              MCPServer 入口(Tool/Resource/Prompt 注册)
│   ├── tool_handler.py        Tool 分发逻辑
│   ├── resource_handler.py    Resource 读取器
│   ├── prompt_handler.py      Prompt 模板
│   └── transports/            传输层(stdio / streamable-http)
├── parsers/                   解析器
│   ├── python_parser.py       Python AST
│   ├── java_parser.py         Java AST
│   ├── kotlin_parser.py       Kotlin 双模式
│   ├── c_parser.py            C 双模式
│   ├── javascript_parser.py   JavaScript
│   └── typescript_parser.py   TypeScript
├── scripts/                   运维脚本
│   ├── tune_rules.py          规则调优报告
│   └── tune_prompts.py        提示词调优上下文生成
└── docs/                      文档
    ├── USER_MANUAL.md         用户手册
    └── design/                设计文档

文档

License

MIT

Metadata

Release files for vcode-analysis 0.16.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vcode-analysis 0.16.2
File Size Uploaded
vcode_analysis-0.16.2.tar.gz 319.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vcode-analysis 0.16.2
File Interpreter ABI Platform
vcode_analysis-0.16.2-py3-none-any.whl Python 3 none any Details

Total release size: 570.4 kB

Release files / vcode_analysis-0.16.2.tar.gz

Download URL vcode_analysis-0.16.2.tar.gz
Size 319.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f581f56df1c1371ba382e18dd1f46847e09e029432984c2f2e8232b6747eecab
BLAKE2b-256 checksum
How to use checksums
5737f1f22d37c1c09a39ecc85c21c2540639e78818fd28651a49490948723440
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / vcode_analysis-0.16.2-py3-none-any.whl

Download URL vcode_analysis-0.16.2-py3-none-any.whl
Size 250.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
05b94e035d61f287941b1528a2a717b06790b9d1b92bbe50f0f7914efe7ad319
BLAKE2b-256 checksum
How to use checksums
097e90907493beb709e7e9b24ddee1bf2af8c6e0c266fb00a2a77d7d4b557d7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.16.2 This release

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page