class
Detector::Specification::GraphqlSdl
- Detector::Specification::GraphqlSdl
- Detector
- Reference
- Object
Defined in:
detector/detectors/specification/graphql_sdl.crConstant Summary
-
SDL_SIGNAL =
/^[\s]*(?:extend\s+)?(?:type|input|interface|union|enum|scalar|directive|schema)\b/m -
Top-level SDL signals — distinguishes a schema document from an operation document (which the file_analyzers/graphql_analyzer handles).
Instance Method Summary
-
#applicable?(filename : String) : Bool
Cheap filename-only filter the detector pass uses to skip
#detecton files the detector cannot possibly match. - #detect(filename : String, file_contents : String) : Bool
-
#idempotent? : Bool
Registers every SDL path in
CodeLocatorfor the analyzer pass. - #set_name
Instance methods inherited from class Detector
applicable?(filename : String) : Bool
applicable?,
detect(filename : String, file_contents : String) : Bool
detect,
idempotent? : Bool
idempotent?,
logger : NoirLogger
logger,
name : String
name
Constructor methods inherited from class Detector
new(options : Hash(String, YAML::Any))
new
Macros inherited from class Detector
define_getter_methods(names)
define_getter_methods
Instance Method Detail
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.
Registers every SDL path in CodeLocator for the analyzer pass.
Must keep running after the first match so all schema files get picked up.