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嵌入, 逆向工具, 静态分析