Skip to content

feat: SpringDIPostProcessor + CLI consolidation (v0.7.1.0)#9

Merged
Schr0d merged 15 commits into
mainfrom
feature/spring-di-post-processor
Apr 16, 2026
Merged

feat: SpringDIPostProcessor + CLI consolidation (v0.7.1.0)#9
Schr0d merged 15 commits into
mainfrom
feature/spring-di-post-processor

Conversation

@Schr0d

@Schr0d Schr0d commented Apr 15, 2026

Copy link
Copy Markdown
Owner

Summary

Spring DI Post-Processor — ArchUnit bytecode scanning detects Spring dependency injection patterns (@Autowired, @Resource, constructor injection) in compiled .class files. Resolves interface→implementation via @Service/@Component/@Repository annotations. On the geditor-api spike: +196 Spring DI edges, 2.71→3.05 edges/node ratio.

CLI Consolidation — Slashed to two commands: archon analyze (with --target for impact analysis) and archon diff. Removed view, impact, check, ecp.

15 commits across 53 files (+1131/-2027, net reduction from dead code removal).

Key changes:

  • postProcess() SPI hook in LanguagePlugin for post-parse edge discovery
  • SpringDIPostProcessor with ArchUnit, auto-detects Maven/Gradle class directories
  • SPRING_DI edge type in both EdgeType enums
  • Dead visualization code removed (ViewCommand, PerspectiveBuilder, TerminalRenderer, etc.)
  • Pipe buffer deadlock fix in CliGitAdapter
  • ArchUnit log spam fix (logback.xml)
  • --json output ordering fix (no longer mixed with text summary)

Test Coverage

233+ tests across all modules. New: SpringDIPostProcessorTest (6 tests), ClassDirectoryFinderTest, AnalyzeCommandTest (5 new), ParseOrchestratorTest (post-process tests), LanguagePluginTest (SPI contract).

Pre-Landing Review

No prior eng review. Diff is 53 files with significant deletion (dead code removal). Core additions are well-tested.

🤖 Generated with Claude Code

Schr0d and others added 15 commits April 15, 2026 20:04
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ge discovery

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…aph rebuild

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…n/Gradle auto-detection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… Spring DI

Uses ArchUnit ClassFileImporter to scan compiled .class files for Spring DI
patterns: @Autowired fields, @resource fields, and constructor injection.
Resolves interface types to concrete @Component/@Service/@repository
implementations and reports ambiguous injections as blind spots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ctor test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…e --target

Remove check, ecp, view commands. Impact analysis now via analyze --target.
EcpGenerator stub removed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update AnalyzeCommand description to mention impact assessment
- README/README-zh: remove view/impact/check/ecp references, update
  CLI to analyze+diff only, remove archon-viz from architecture, add
  v0.7 to roadmap, update blind spots (Spring DI now detected)
- CHANGELOG: add v0.7.1.0 entry for SpringDIPostProcessor + command slash
- skill.md/SKILL.md: replace view --format json with analyze --format
  agent, remove Spring DI from blind spots lists
- TODOS: mark #4/#6/#8 DONE, mark #5/#7 OBSOLETE, update remaining
  items to reflect current state

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix CliGitAdapter pipe buffer deadlock: drain output stream
  concurrently with waitFor() to prevent 60s hangs on large git show
- Add logback.xml to suppress ArchUnit/Javaparser DEBUG logging
- Cap unbounded module listing in analyze --target (max 20 shown)
- Add 5 tests for resolveTarget/stripNamespacePrefix (replaced
  deleted ImpactCommandTest coverage)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ViewCommand was removed from ArchonCli in the CLI consolidation but the
class and its dependency tree were left behind. Removed:
- ViewCommand, ViewCommandTest (dead CLI entry point)
- TerminalRenderer, TerminalRendererTest (only used by ViewCommand)
- PerspectiveBuilder, PerspectiveBuilderTest (unused visualization)
- NodeGroup, NodeView, EdgeView, PerspectiveView (internal to above)

Kept: JsonSerializer, DiffSerializer, ViewServer (used by analyze/diff)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Moved --json output handling before agent format auto-detection so JSON
output short-circuits cleanly instead of printing after the human-readable
summary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Schr0d Schr0d changed the title feat(java): Spring DI post-processor + CLI consolidation + bug fixes (v0.7.1.0) feat: SpringDIPostProcessor + CLI consolidation (v0.7.1.0) Apr 15, 2026
@Schr0d Schr0d merged commit 0d65ad1 into main Apr 16, 2026
1 check passed
Schr0d added a commit that referenced this pull request Apr 16, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Schr0d Schr0d deleted the feature/spring-di-post-processor branch April 16, 2026 03:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant