Symbol-level view of a class — everything deps/LSP/hotspot need to
reason about a class without parsing method bodies. Fields intentionally
track the subset of ClassInfo that survives cross-file consumption.
Symbol-level view of a function — name + signature + call-graph input.
Omits body_hash, complexity, cognitive, external_refs, chain_depth,
parameter_types (TypeRef), return_type — those live in FunctionInfo
for analyze plugins.
Unified project cache: parse results + findings + symbol summaries.
Facade over three cache layers (models, symbols, findings) plus the
meta bookkeeping they share. Method count ≥ 10 is structural, not a
smell — each layer exposes get/put atop the layered read/write helpers.
Compact structural summary of a file — symbol-level view without the
per-function-body detail that analyze plugins need. Serves cha deps,
future LSP workspace-symbols, and anywhere a reader needs “what
classes/functions live here and how are they related” without caring
about complexity metrics or TypeRef origin resolution.
A single arm value of a switch/match construct. Recorded so
signature-based analyses can notice “switch on string constants” or
“switch on integer magic numbers” dispatch patterns. Non-literal
patterns (Rust enum variants, Python capture patterns, default)
collapse to Other.
Where a referenced type is defined, from the perspective of the file that
uses it. Used by abstraction-boundary analyses to distinguish “own domain”
types from “pulled in from a library” types.
Sort findings by priority descending (most important first).
Writes the computed score back to Finding::risk_score so reporters can
show why a finding ranks where it does.
priority = severity_weight × overshoot × compound_factor