Skip to main content

基于大模型的智能代码分析工具,支持代码审查、文档生成、架构分析和安全扫描

Project description

VCode Analysis

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

特性

  • 代码审查 — 1-10 评分 + 问题定位 + 改进建议
  • 批量分析 — 智能打包多文件为单次 API 调用,减少 85%+ 请求量
  • 双层缓存 — 内存 LRU + 磁盘持久化,二次分析减少 98% 调用
  • 安全扫描 — 正则规则引擎 + LLM 深度语义分析
  • 架构分析 — 模块识别、依赖关系、耦合度评估
  • 文档生成 — 模块文档 / API 文档 / README 自动生成
  • 多语言解析 — Python/Java AST、Kotlin/C 双模式、JS/TS/Vue 正则
  • 上下文增强 — 自动构建项目依赖关系,提升分析质量
  • Git 集成 — 单仓库 + 批量多仓库操作
  • 交互式报告 — Markdown + HTML(排序、筛选、折叠)

安装

# 使用 pip
pip install vcode-analysis

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

可选依赖

# Java AST 解析
pip install javalang

# C 语言精确解析
pip install pycparser

快速开始

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

# 指定输出格式
vcode-analysis review ./src -o report.md -f markdown
vcode-analysis review ./src -o report.html -f html

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

# 审查 Git 提交
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 security ./src
vcode-analysis security ./src --deep    # LLM 深度扫描

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

4. Git 操作

# 克隆并分析
vcode-analysis clone https://github.com/user/repo.git

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

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

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

命令参考

vcode-analysis review <path>              代码审查
vcode-analysis review-commit <commit>     审查指定提交
vcode-analysis doc <path>                 生成文档
vcode-analysis arch <path>                架构分析
vcode-analysis security <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 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/html) markdown
-w, --workers 并发线程数 5
--context 启用上下文增强 关闭
--no-cache 禁用缓存 关闭
--no-batch 禁用批量分析 关闭

配置文件

~/.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

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

cache:
  ttl: 604800
  memory_cache_size: 1000

环境变量

变量 说明
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              配置管理
│   ├── ignore.py              过滤规则
│   ├── git_handler.py         Git 操作
│   ├── batch_planner.py       批量规划
│   ├── batch_analyzer.py      批量分析
│   ├── cache_manager.py       缓存管理
│   ├── token_estimator.py     Token 估算
│   └── report_generator.py    报告生成
├── analyzers/                 分析器
│   ├── code_review.py         代码审查
│   ├── documentation.py       文档生成
│   ├── architecture.py        架构分析
│   ├── security.py            安全扫描
│   ├── directory.py           目录分析
│   └── context_builder.py     上下文构建
├── 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
└── docs/                      文档
    ├── USER_MANUAL.md         用户手册
    └── design/                设计文档

文档

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vcode_analysis-0.5.2.tar.gz (154.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vcode_analysis-0.5.2-py3-none-any.whl (129.4 kB view details)

Uploaded Python 3

File details

Details for the file vcode_analysis-0.5.2.tar.gz.

File metadata

  • Download URL: vcode_analysis-0.5.2.tar.gz
  • Upload date:
  • Size: 154.2 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for vcode_analysis-0.5.2.tar.gz
Algorithm Hash digest
SHA256 1e53ee295fc1d27ce7bbb6ee3f6ce4f33709eb50fa794f0f5c399021ce325719
MD5 191d7e3f6fd3fbdf3e31000348b8441b
BLAKE2b-256 9db4f82a7ebd2b8573373bc159232f77352fa4341c22841fa4c768292e496021

See more details on using hashes here.

File details

Details for the file vcode_analysis-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: vcode_analysis-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 129.4 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for vcode_analysis-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1ab7701f128fb1017fcefd0e4881c48a32855ae0b7c09209ea4159ec88b59a72
MD5 572a9655ca87744350b2056dec256a39
BLAKE2b-256 b8157a12209e34b28a2e15946b4fe4cd79c50ad612b05bdd8763f9efa9fd4487

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page