Python Code Flow Analysis Tool - Static analysis for control flow graphs (CFG), data flow graphs (DFG), and call graph extraction.
For large projects (>1000 functions), use Fast Mode:
# Ultra-fast analysis (5-10x faster)
code2flow /path/to/project --fast
# Custom performance settings
code2flow /path/to/project \
--parallel-workers 8 \
--max-depth 3 \
--skip-data-flow \
--cache-dir ./.cache
| Technique | Speedup | Use Case |
|---|---|---|
--fast mode |
5-10x | Initial exploration |
| Parallel workers | 2-4x | Multi-core machines |
| Caching | 3-5x | Repeated analysis |
| Depth limiting | 2-3x | Large codebases |
| Skip private methods | 1.5-2x | Public API analysis |
| Project Size | Functions | Time (fast) | Time (full) |
|---|---|---|---|
| Small (<100) | ~50 | 0.5s | 2s |
| Medium (1K) | ~500 | 3s | 15s |
| Large (10K) | ~2000 | 15s | 120s |
# Install from source
pip install -e .
# Or with development dependencies
pip install -e ".[dev]"
# Analyze a Python project
code2flow /path/to/project
# With verbose output
code2flow /path/to/project -v
# Specify output directory and formats
code2flow /path/to/project -o ./analysis --format yaml,json,mermaid,png
# Use different analysis modes
code2flow /path/to/project -m static # Fast static analysis only
code2flow /path/to/project -m hybrid # Combined analysis (default)
code2flow /path/to/project
# Static analysis only (fastest)
code2flow /path/to/project -m static
# Dynamic analysis with tracing
code2flow /path/to/project -m dynamic
# Hybrid analysis (recommended)
code2flow /path/to/project -m hybrid
# Behavioral pattern focus
code2flow /path/to/project -m behavioral
# Reverse engineering ready
code2flow /path/to/project -m reverse
code2flow /path/to/project -o my_analysis
| File | Description |
|---|---|
analysis.yaml |
Complete structured analysis data |
analysis.json |
JSON format for programmatic use |
flow.mmd |
Full Mermaid flowchart (all nodes) |
compact_flow.mmd |
Compact flowchart - deduplicated nodes, grouped by function |
calls.mmd |
Function call graph |
cfg.png |
Control flow visualization |
call_graph.png |
Call graph visualization |
llm_prompt.md |
LLM-ready analysis summary |
The compact_flow.mmd file provides optimized output:
x = 1, x = 2 → x = N)Example compact output:
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
The generated prompt includes:
Each pattern includes:
The analysis provides specific guidance for:
Automatically identifies:
Maps:
When using dynamic mode:
The generated system_analysis_prompt.md is designed to be:
Example usage with an LLM:
"Based on the system analysis provided, implement this system in Go,
preserving all behavioral patterns and data flow characteristics."
The analyzer is designed to be extensible. Key areas for enhancement:
Apache License 2.0 - see LICENSE for details.
Created by Tom Sapletta - tom@sapletta.com