7f12ed3f3a1c4f691cb489bea2f988c97b93b71e
Co-authored-by: Cursor <cursoragent@cursor.com>
Index trivial accessors and inline them in dataflow, constant extraction, and call graph resolution.
Spring State Machine Explorer
Static analysis tool to extract and visualize Spring State Machines with deep code traceability.
Core Modules
state_machine_exporter: Java AST analyzer. Scans source code, resolves local Maven/Gradle dependencies, and extracts logic (Lambdas, Actions, Guards) into JSON/PUML.state_machine_exporter_html: Generates an interactive HTML portal with SVG diagrams and rich tooltips.
Usage
1. Extract Metadata (JSON)
./gradlew :state_machine_exporter:run --args="-i ./my-project -o ./out -f json"
2. Generate Interactive Portal (HTML)
./gradlew :state_machine_exporter_html:run --args="-i ./my-project -o ./out_html"
Supports --profiles prod to resolve Spring property placeholders.
Business Flows
Define sequence of events in src/main/resources/flows.json:
[
{
"name": "Order Success",
"description": "Happy path for order placement",
"steps": ["PAY", "CHECK_AVAILABILITY->PENDING", "SHIP"]
}
]
JSON Structure
metadata.entryPoints: REST, WebFlux, and JMS entry points.metadata.callChains: Trace from API call to machine trigger (sendEvent).transitions.actions[].internalLogic: Extracted source code/lambdas.metadata.properties: Dictionary of all detected Spring profiles.
Description
Languages
Java
92.6%
HTML
7.4%