Analyzer::Java::Quarkus
Inherits Analyzer < FileHelper < Reference < Object
Quarkus is JAX-RS-flavoured, so this analyzer just drives the
shared TreeSitterJaxRsExtractor against files in project roots
that carry a Quarkus marker. Resource classes are often plain
Jakarta REST and do not import Quarkus directly. The extractor
already understands Quarkus's
@RestPath / @RestQuery / @RestHeader / @RestForm /
@RestCookie shorthand annotations alongside the standard
JAX-RS names, so no Quarkus-specific tree walking is needed.
Constants
Crystal recompiles an interpolated regex literal on every evaluation
(a full PCRE2 JIT compile). Only @Param/@Header are probed, so
precompile their matchers once at load time.
quarkus_route_source?/jaxrs_source? gate per-file tree-sitter
parses; one precompiled Regex.union scan (PCRE2 JIT, auto-escapes
each literal) each replaces the chained String#includes? passes
over the same buffer.
Rules::JAVA plus Nest::Angle, on the same shared depth counter. Not
the shared Rules::JAVA preset: this splitter runs on a JAX-RS resource
method's parameter list, where Map<String, List<Integer>> is one
parameter and must not break in two. The cost is that a < used as a
comparison — f(a < b, c) — raises the depth and swallows the comma,
which cannot happen in a parameter list. File-local because quarkus is
the only splitter with exactly this combination; wicket also counts
angles but takes only " as a quote.
Class methods
Instance methods
Instance-side view of the same declaration. The per-file rescues live on
this base class, which has no way to name the analyzer that is running
inside them, so a skipped file could not be attributed to a tech.
Deriving it from analyzer_for keeps the name written exactly once.