class
Detector::Specification::GraphqlSdl
- Detector::Specification::GraphqlSdl
- Detector
- Reference
- Object
Defined in:
detector/detectors/specification/graphql_sdl.crConstant Summary
-
SDL_DECLARATION =
/^(?:(?:extend\s+)?(?:type|input|interface|enum|scalar)\s+[A-Za-z_][A-Za-z0-9_]*\b|(?:extend\s+)?union\s+[A-Za-z_][A-Za-z0-9_]*\s*=|directive\s+@[A-Za-z_][A-Za-z0-9_]*\b|(?:extend\s+)?schema\b)/ -
SDL declaration signals — distinguished at top-level only by
sdl_document?. A broad keyword-only check is too loose: generated operation documents often select fields namedtype,schema, orenum, and those field names can appear at the start of an indented line.sdl_document?walks the document with a small state machine:- tracks brace depth (only outside strings) so keywords inside selections, fragments, or default values are ignored
- skips block strings (""") and regular strings ("...") so that string literals containing SDL-like keywords, #, or {}/ do not affect detection or depth (e.g. default values or descriptions with example SDL)
- strips # comments only when not inside a string
Class Method Summary
-
.tech_name : String
The tech name without needing an instance, so the registry can be read off the classes themselves rather than from a parallel list.
Instance Method Summary
-
#applicable?(filename : String) : Bool
Registers every SDL path in
CodeLocatorfor the analyzer pass. - #detect(filename : String, file_contents : String) : Bool
-
#idempotent? : Bool
Registers every SDL path in
CodeLocatorfor the analyzer pass. -
#set_name
Registers every SDL path in
CodeLocatorfor the analyzer pass.
Instance methods inherited from class Detector
applicable?(filename : String) : Bool
applicable?,
base_relative_path(filename : String) : String
base_relative_path,
content_matches?(file_contents : String, markers : Regex) : Bool
content_matches?,
detect(filename : String, file_contents : String) : Bool
detect,
gemfile_dependency?(file_contents : String, gem_name : String) : Bool
gemfile_dependency?,
gemspec_dependency?(file_contents : String, gem_name : String) : Bool
gemspec_dependency?,
idempotent? : Bool
idempotent?,
logger : NoirLogger
logger,
name : String
name,
path_sensitive? : Bool
path_sensitive?
Constructor methods inherited from class Detector
new(options : Hash(String, YAML::Any))
new
Macros inherited from class Detector
detector_for(tech, extensions = nil, basenames = nil, path_segments = nil, idempotent = nil)
detector_for
Class Method Detail
The tech name without needing an instance, so the registry can be read off the classes themselves rather than from a parallel list.
Instance Method Detail
Registers every SDL path in CodeLocator for the analyzer pass.
Must keep running after the first match so all schema files get picked up.
Registers every SDL path in CodeLocator for the analyzer pass.
Must keep running after the first match so all schema files get picked up.
Registers every SDL path in CodeLocator for the analyzer pass.
Must keep running after the first match so all schema files get picked up.