Skip to content

v0.5.0 — Java + Salesforce Apex support

Choose a tag to compare

@einvoice-dev1 einvoice-dev1 released this 18 Jul 00:21
· 14 commits to main since this release

New languages

The engine parsed JS/TS and Python only — Java and Salesforce repos x-rayed to zero components. Both are now first-class:

  • Java (.java) — layers inferred from Spring annotations first (@RestController/@Controller → controller, @Service → service, @Repository → repository, @Entity → model), then Spring Data repository interfaces (extends JpaRepository/CrudRepository/...), then class-name-suffix fallback (*Controller, *Service, *Repository/*Dao). Imports resolve to internal dependency edges; JDBC/JPA calls register as data access.
  • Salesforce Apex (.cls, .trigger) — since Apex has no imports, dependency edges come from resolving type references (new X(), extends, implements, static calls) against the org's own class names. SOQL registers as a read, DML as a write/delete. Layers come from Salesforce naming convention (*TriggerHandler → handler, *Controller → controller, *Service → service, *Selector → repository, *Domain → model, *Batch/*Queueable/*Schedulable → job, triggers get their own layer).

Starter packs + auto-detection

archsteer init now inspects the repo for build manifests (pom.xml/build.gradle → java-spring, sfdx-project.json/force-app → salesforce, pyproject.toml/setup.py/requirements.txt → python-service, else express-to-next) and seeds a matching baseline architecture.yaml + ADRs — real rules on first run, not a blank slate. Override with --pack if the guess is wrong.

  • java-spring: persistence only in repositories; controllers must not touch repositories directly
  • salesforce: SOQL only in selectors; no DML in triggers or controllers
  • python-service: persistence only in repositories; API layer must not touch repositories directly

Validation

Benchmarked against real repos: Spring PetClinic scores 100% conformant on the java-spring pack (reference app — any violation there means a broken heuristic). trailheadapps/dreamhouse-lwc genuinely violates the salesforce pack (~29 SOQL-in-controller findings) — a positive control confirming the rules fire correctly on real code.

Full diff: v0.4.2...v0.5.0