Detector::Specification::Kong
Constants
Necessary-condition guard: both accepted shapes require one of these
literals somewhere in the document (deck_shape? needs a
_format_version key, kic_shape? an apiVersion containing
configuration.konghq.com/), so any YAML file without them can skip
the full parse. This detector is non-idempotent and previously parsed
every YAML file of the scan twice (valid_yaml? + YAML.parse).
Class methods
The tech name without needing an instance, so the registry can be read off the classes themselves rather than from a parallel list.
Instance methods
Cheap filename-only filter the detector pass uses to skip
detect on files the detector cannot possibly match. The
default true preserves prior behavior (every detector runs on
every file). Override with the same predicate the body of
detect starts with — e.g., filename.ends_with?(".py") for a
Python framework detector — so the detector loop avoids the
detect dispatch on files outside the detector's language.
On large codebases (saleor's 4255 .py files) this lifts ~100
virtual detect calls per file out of the hot loop because
most detectors' inner first-line is exactly this kind of cheap
filename check.
Whether the detector can be skipped on subsequent files once it
has matched. Defaults to true (idempotent — the detector only
signals tech presence). Detectors that perform side effects in
detect (e.g., the C# ASP.NET ones populate the CodeLocator
with route-config paths, the OAS/RAML detectors register spec
paths) must override to false so the detector pass keeps
invoking them on every file.