Kamil Patryk Kozakowski 0628710106 Analyze cloned repos from source without running Maven or Gradle on the target project.
Parse build files statically for module wiring, use the exporter's bundled Spring classpath for type bindings, optionally include pre-built generated main sources, and exclude test output and test-scoped dependencies from analysis.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-11 10:35:52 +02:00
2026-06-09 20:31:15 +02:00
2026-06-06 15:07:03 +02:00
2025-07-05 21:26:21 +02:00
2026-06-09 02:56:53 +02:00
2026-06-06 15:07:03 +02:00
2026-06-06 15:07:03 +02:00
2026-06-17 07:30:08 +02:00
2026-06-28 11:42:18 +02:00
1
2026-07-06 17:43:34 +02:00
1
2026-07-06 17:43:34 +02:00
2026-06-20 07:04:44 +02:00

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
No description provided
Readme 23 MiB
Languages
Java 92.6%
HTML 7.4%