feat(linter): glint explain, GL042 rules:if: reachability, GL043 inherit completeness
- `glint explain <RULE>`: new subcommand printing rule description, rationale, bad-YAML example and fix for every GL001–GL043 rule. `glint explain` (no arg) lists all rules with ID, severity, title. Rule IDs are case-insensitive. - GL042 (rules:if: evaluated reachability): warns when every rules:if: condition evaluates to false given the values of variables declared in the pipeline YAML, making the job statically unreachable. Conservative: only fires when all referenced variables are declared in YAML; predefined CI_* / GITLAB_* variables are skipped to avoid false positives. - GL043 (inherit: completeness): warns when inherit: default: is declared but there is no default: block in the pipeline (dead declaration), or when the list form names fields not set in the default: block. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -143,4 +143,15 @@ const (
|
||||
|
||||
// GL041: cache.key.files contains a glob pattern; it must be a list of exact file paths.
|
||||
RuleInvalidCacheKeyFiles = "GL041"
|
||||
|
||||
// GL042: every rules:if: condition in a job's rules: block evaluates to false
|
||||
// given the values of variables declared in the pipeline YAML, so the job can
|
||||
// never be active. Only fires when all referenced variables are declared
|
||||
// (predefined CI_* / GITLAB_* vars are not evaluated to avoid false positives).
|
||||
RuleStaticDeadRules = "GL042"
|
||||
|
||||
// GL043: a job declares 'inherit: default:' (true, false, or list) but the
|
||||
// pipeline has no 'default:' block, making the declaration a no-op. Also fires
|
||||
// when 'inherit: default: [list]' names fields not set in the default: block.
|
||||
RuleInheritNoDefault = "GL043"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user