Improve multi-machine scoping, path binding expansion, and analysis precision.
Expand generic REST path variables into concrete command keys, filter entry points and call chains per machine, and tighten ambiguous routing and switch constraints so layered dispatchers link fewer false positives. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
31
README.md
31
README.md
@@ -8,16 +8,45 @@ Static analysis tool to extract and visualize Spring State Machines with deep co
|
||||
|
||||
## Usage
|
||||
|
||||
Analysis is **source-first**: the exporter reads project source and build metadata (`pom.xml`, `settings.gradle`) statically. It does **not** run Maven or Gradle against the project being analyzed.
|
||||
|
||||
### 1. Extract Metadata (JSON)
|
||||
```bash
|
||||
./gradlew :state_machine_exporter:run --args="-i ./my-project -o ./out -f json"
|
||||
```
|
||||
|
||||
Common options:
|
||||
|
||||
| Flag | Description |
|
||||
|------|-------------|
|
||||
| `-i, --input` | Project directory to scan (defaults to `.`) |
|
||||
| `-j, --json` | Re-render from an existing JSON export instead of scanning source |
|
||||
| `-o, --output` | Output directory (default `./out`) |
|
||||
| `-f, --format` | Comma-separated formats: `json`, `dot`, `puml`, `scxml` |
|
||||
| `-p, --profiles` | Spring profiles for property placeholder resolution |
|
||||
| `--event`, `--state` | Enum formatting: `fn` (default), `fqn`, `sn` |
|
||||
| `--debug` | Verbose analysis logging and unresolved chain diagnostics |
|
||||
| `--no-diamonds` | Render choice/junction states as regular nodes (default: diamonds) |
|
||||
| `--include-generated-sources` | Also scan `target/` / `build/` generated `.java` trees (default: on) |
|
||||
| `--no-inline-accessors` | Disable accessor indexing/inlining (enabled by default) |
|
||||
|
||||
### 2. Generate Interactive Portal (HTML)
|
||||
```bash
|
||||
./gradlew :state_machine_exporter_html:run --args="-i ./my-project -o ./out_html"
|
||||
```
|
||||
*Supports `--profiles prod` to resolve Spring property placeholders.*
|
||||
|
||||
HTML-specific options:
|
||||
|
||||
| Flag | Description |
|
||||
|------|-------------|
|
||||
| `-f, --flows` | Custom `flows.json` path |
|
||||
| `-m, --machine` | Export only machines whose name contains this filter |
|
||||
| `--open` | Open the generated portal in the default browser |
|
||||
| `--no-metadata-pane` | Hide the left metadata pane (entry points, flows) |
|
||||
| `--no-diamonds` | Render choice pseudostates as normal nodes |
|
||||
| `--debug` | Same diagnostic mode as the core exporter |
|
||||
| `--include-generated-sources` | Same generated-source scanning as the core exporter |
|
||||
| `-p, --profiles` | Spring profiles for property resolution |
|
||||
|
||||
## Business Flows
|
||||
Define sequence of events in `src/main/resources/flows.json`:
|
||||
|
||||
Reference in New Issue
Block a user