class

Detector::Specification::Kong

Inherits Detector < Reference < Object

Constants

KONG_MARKER = /_format_version|configuration\.konghq\.com\//

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

tech_name

The tech name without needing an instance, so the registry can be read off the classes themselves rather than from a parallel list.

Source

Instance methods

applicable?(filename : String) : Bool

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.

Source
detect(filename : String, file_contents : String) : Bool
Source
idempotent?

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.

Source
set_name
Source