基于大模型的智能代码分析工具,支持代码审查、文档生成、架构分析和安全扫描
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
# 知识图谱
vcode-analysis kg ./src
vcode-analysis kg ./src --format json # JSON 格式输出
vcode-analysis kg ./src --llm # LLM 增强分析
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 kg <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 上下文构建
│ └── knowledge_graph.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
Release history Release notifications | RSS feed
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.7.1.tar.gz
(188.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vcode_analysis-0.7.1.tar.gz.
File metadata
- Download URL: vcode_analysis-0.7.1.tar.gz
- Upload date:
- Size: 188.3 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
692220744d1dc4cde1aeede2075a17daf5aad47ebc87b247870fc99838625a1b
|
|
| MD5 |
c8940387953d0f442f0e80ff68cec6b4
|
|
| BLAKE2b-256 |
49b44aa2f52291e580157afc767a9e8e10a6accbee79a5ca2396beebcd93980e
|
File details
Details for the file vcode_analysis-0.7.1-py3-none-any.whl.
File metadata
- Download URL: vcode_analysis-0.7.1-py3-none-any.whl
- Upload date:
- Size: 150.8 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb746dcaf7633944507a4cd4da20ccf5b067a05c97649fd56e1a189fd08f8e1a
|
|
| MD5 |
84e959b58576ee385b507c4a34c90c82
|
|
| BLAKE2b-256 |
578db1796a032d0ca1e5df24c42ab3d0f86e020101f2e3cbd3c4f9aaf35f6c1d
|