semcod/code2logic
GitHub: semcod/code2logic
一款高性能 Python 代码流程分析工具,通过提取 CFG、DFG 和调用图并生成 LLM 友好的输出,帮助开发者快速理解大型代码库的结构与行为。
Stars: 6 | Forks: 1
# code2flow
**Python 代码流程分析工具** - 用于控制流图(CFG)、数据流图(DFG)和调用图提取的静态分析。
## 性能优化
对于大型项目(>1000 个函数),请使用**快速模式**:
```
# 超快分析(快 5-10 倍)
code2flow /path/to/project --fast
# 自定义性能设置
code2flow /path/to/project \
--parallel-workers 8 \
--max-depth 3 \
--skip-data-flow \
--cache-dir ./.cache
```
### 性能提示
| 技术 | 加速 | 使用场景 |
|-----------|---------|----------|
| `--fast` 模式 | 5-10 倍 | 初始探索 |
| 并行 worker | 2-4 倍 | 多核机器 |
| 缓存 | 3-5 倍 | 重复分析 |
| 深度限制 | 2-3 倍 | 大型代码库 |
| 跳过私有方法 | 1.5-2 倍 | 公共 API 分析 |
### 基准测试
| 项目大小 | 函数数 | 时间 (fast) | 时间 (full) |
|--------------|-----------|-------------|-------------|
| 小型 (<100) | ~50 | 0.5s | 2s |
| 中型 (1K) | ~500 | 3s | 15s |
| 大型 (10K) | ~2000 | 15s | 120s |
## 功能
- **控制流图(CFG)**:从 Python AST 中提取执行路径
- **数据流图(DFG)**:跟踪变量定义和依赖关系
- **调用图分析**:映射函数调用和依赖关系
- **模式检测**:识别设计模式(状态机、工厂、递归)
- **紧凑输出**:通过模式识别生成去重后的流程图
- **多种输出格式**:YAML、JSON、Mermaid 图表、PNG 可视化
- **适配 LLM 的输出**:生成用于逆向工程的 prompt
## 安装
```
# 从源码安装
pip install -e .
# 或者包含 development dependencies
pip install -e ".[dev]"
```
## 快速入门
```
# 分析 Python 项目
code2flow /path/to/project
# 带有详细输出
code2flow /path/to/project -v
# 指定输出目录和格式
code2flow /path/to/project -o ./analysis --format yaml,json,mermaid,png
# 使用不同的分析模式
code2flow /path/to/project -m static # Fast static analysis only
code2flow /path/to/project -m hybrid # Combined analysis (default)
```
## 用法
### 基础分析
```
code2flow /path/to/project
```
### 分析模式
```
# 仅静态分析(最快)
code2flow /path/to/project -m static
# 带 tracing 的动态分析
code2flow /path/to/project -m dynamic
# 混合分析(推荐)
code2flow /path/to/project -m hybrid
# 专注于行为模式
code2flow /path/to/project -m behavioral
# Reverse engineering 就绪
code2flow /path/to/project -m reverse
```
### 自定义输出
```
code2flow /path/to/project -o my_analysis
```
## 输出文件
| 文件 | 描述 |
|------|-------------|
| `analysis.yaml` | 完整的结构化分析数据 |
| `analysis.json` | 用于程序化使用的 JSON 格式 |
| `flow.mmd` | 完整的 Mermaid 流程图(所有节点) |
| `compact_flow.mmd` | **紧凑流程图** - 去重节点,按函数分组 |
| `calls.mmd` | 函数调用图 |
| `cfg.png` | 控制流可视化 |
| `call_graph.png` | 调用图可视化 |
| `llm_prompt.md` | 适配 LLM 的分析摘要 |
### 紧凑流程格式
`compact_flow.mmd` 文件提供了优化的输出:
- **去重**:合并相同的节点模式(例如,`x = 1`, `x = 2` → `x = N`)
- **函数子图**:在子图中按函数对节点进行分组
- **模式保留**:在减小文件大小的同时保持控制流结构
- **Import 重用**:链接公共模式而不是复制
紧凑输出示例:
```
flowchart TD
%% Function subgraphs
subgraph F12345["process_data"]
N1["x = N"]
N2{"if x > 0"}
N3[/"return x"/]
end
%% Edges reference deduplicated nodes
N1 --> N2
N2 -->|"true"| N3
```
## 理解输出
### LLM Prompt 结构
生成的 prompt 包括:
- 带有指标的系统概述
- 调用图结构
- 带有置信度分数的行为模式
- 数据流洞察
- 状态机定义
- 逆向工程指南
### 行为模式
每个模式包括:
- **名称**:描述性标识符
- **类型**:sequential、conditional、iterative、recursive、state_machine
- **入口/出口点**:关键函数
- **决策点**:条件逻辑位置
- **数据转换**:变量依赖关系
- **置信度**:模式检测的确定性
### 逆向工程指南
该分析为以下方面提供了具体指导:
1. 保留调用图结构
2. 实现已识别的模式
3. 维护数据依赖关系
4. 重现状态机
5. 保留决策逻辑
## 高级功能
### 状态机检测
自动识别:
- 状态变量
- 状态转换方法
- 源状态和目标状态
- 状态机层级结构
### 数据流跟踪
映射:
- 变量依赖关系
- 数据转换
- 信息流路径
- 副作用
### 动态追踪
使用动态模式时:
- 函数进入/退出时间
- 调用栈重建
- 异常跟踪
- 性能分析
## 与 LLM 集成
生成的 `system_analysis_prompt.md` 旨在做到:
- **全面**:包含所有必要的系统信息
- **结构化**:组织有序,易于解析
- **可操作**:包含具体的实现指导
- **语言无关**:描述行为,而不是实现
与 LLM 的使用示例:
```
"Based on the system analysis provided, implement this system in Go,
preserving all behavioral patterns and data flow characteristics."
```
## 限制
- 动态分析需要测试文件
- 复杂的继承层级结构可能需要手动审查
- 外部库调用被视为黑盒
- 运行时反射和元编程无法被完全捕获
## 许可证
Apache License 2.0 - 详情请参阅 [LICENSE](LICENSE)。
## 作者
由 **Tom Sapletta** 创建 - [tom@sapletta.com](mailto:tom@sapletta.com)
## 状态
_最后由 [taskill](https://github.com/oqlos/taskill) 更新于 2026-04-25 13:36 UTC_
| 指标 | 数值 |
|---|---|
| HEAD | `bdf9336` |
| Coverage | — |
| Failing tests | — |
| Commits in last cycle | 50 |
标签:Homebrew安装, Linux安全, Python, 云安全监控, 代码分析, 凭证管理, 控制流图, 数据流图, 无后门, 自动化payload嵌入, 逆向工具, 静态分析