Files
spring-state-machine-renderer/plan-extended-anaylis/PLAN.md

3.4 KiB

Execution Plan for Extended Analysis

Phase 0: Surgical Refactoring (The Enrichment Hook)

  • Create AnalysisResult and CodebaseMetadata models.
  • Update ExportService.generateOutputs to accept AnalysisResult.
  • Implement EnrichmentService and AnalysisEnricher interface.
  • Wrap current parser outputs in AnalysisResult within ExportService.

Phase 1: Foundation

  • Implement JdtIntelligenceProvider as the primary semantic analyzer.
  • Implement RegexIntelligenceProvider for fast, lightweight metadata extraction. ...

Phase 2: Direct Trigger Detection

  • Implement GenericEventDetector using ASTVisitor to find sendEvent calls.
  • Enhance CodebaseContext to provide mapping from MethodDeclaration to its callers (within the same codebase).

Phase 3: Entry Point Mapping

  • Implement SpringMvcDetector for REST endpoints.
  • Implement MessageListenerDetector for Kafka/JMS.
  • Implement ConfigurableTriggerDetector for user-defined patterns.

Phase 4: Call Graph Integration

  • Develop a simple call graph builder to link Entry Points to Trigger Points via intermediate service calls.
  • Support inheritance in call graph resolution (e.g., calling a method defined in an interface/base class).

Phase 5: Correlation and Visualization

  • Update ExportService to include trigger information.
  • Update DOT exporter to show "external" entry points as boxes pointing to transitions.
  • Update SCXML exporter to include trigger metadata in <transition> tags.

Phase 6: Validation

  • Create a "Complex Sample Project" with REST controllers, services, and multiple state machines.
  • Add unit tests for each detector and the aggregator.
  • Verify that inheritance in both state machine config and controllers is correctly handled.

Phase 7: Advanced Value Resolution

  • Implement PropertyResolver to scan application.properties/yml.
  • Add support for @Value tracking in fields and constructors.
  • Implement constant resolution for cross-class references in annotations.
  • Integrate value propagation into the call graph analysis (linking injected values to sendEvent arguments).

Phase 8: Advanced String Expression Resolution

  • Implement ValueResolver to handle string concatenations and variable references.
  • Support cross-class constant lookup using JDT.
  • Update all Enrichers (MVC, Rabbit, JMS) to use ValueResolver for metadata extraction.
  • Verify with complex path patterns in the integration test suite.

Phase 9: Instance Identification & Persistence Mapping

  • Implement InstanceIdentifier to track State Machine IDs (via @Qualifier, bean names, or factories).
  • Detect persistence restoration logic (persister.restore).
  • Update all Enrichers to include stateMachineId and isRestoredFromPersistence in metadata.
  • Verify multi-SM identification in the integration test suite.

Phase 10: Incoming Payload Analysis

  • Implement payload type extraction for REST and Message entry points.
  • Detect usage of payload fields in sendEvent or restore calls.
  • Add payloadType to EntryPoint and TriggerPoint models.

Phase 11: Interceptor & Filter Mapping

  • Implement detection of HandlerInterceptor and Filter implementations.
  • Map interceptors to endpoints using WebMvcConfigurer analysis.
  • Provide "Interceptor Context" metadata for each mapped endpoint.