Metadata-Version: 2.4
Name: vcode-analysis
Version: 0.5.2
Summary: 基于大模型的智能代码分析工具，支持代码审查、文档生成、架构分析和安全扫描
Author-email: Wellchang <2483808264@qq.com>
License: MIT
Project-URL: Homepage, https://xxxxxx
Project-URL: Repository, https://xxxxxx
Project-URL: Documentation, https://xxxxxx
Project-URL: Bug Tracker, https://xxxxxx
Keywords: vcode-analysis,llm,code-review,documentation
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Documentation
Classifier: Topic :: Security
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.25.0
Requires-Dist: docopt>=0.6.2
Requires-Dist: pyyaml>=6.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Provides-Extra: rich
Requires-Dist: rich>=13.0.0; extra == "rich"
Provides-Extra: parsers
Requires-Dist: javalang>=0.13.0; extra == "parsers"
Requires-Dist: pycparser>=2.21; extra == "parsers"
Dynamic: license-file

# VCode Analysis

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

## 特性

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

## 安装

```bash
# 使用 pip
pip install vcode-analysis

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

### 可选依赖

```bash
# Java AST 解析
pip install javalang

# C 语言精确解析
pip install pycparser
```

## 快速开始

### 1. 配置 LLM 服务

```bash
# 方式一：环境变量
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. 代码审查

```bash
# 审查目录（默认启用批量+缓存）
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. 其他分析

```bash
# 生成文档
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 操作

```bash
# 克隆并分析
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`：

```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/                设计文档
```

## 文档

- [用户手册](docs/USER_MANUAL.md)
- [设计文档](docs/design/vcode-analysis-tool.md)
- [批量分析优化设计](docs/design/batch-cache-optimization.md)
- [Kotlin 解析器设计](docs/design/kotlin-parser-design.md)
- [C 解析器设计](docs/design/c-parser-design.md)

## License

MIT
