Writing rules¶
Rules implement:
type Rule interface {
ID() string
META() RuleMeta
Apply(file string, f *hcl.File) []Issue
Finish() []Issue
}
Parse with hclsyntax.ParseConfig
, iterate body.Blocks
, or use the optional AST walker for nested/expr-heavy checks.
Return issues with precise hcl.Range
. Keep rules single-purpose and fast.
Depending on what the rule needs to assert, you may report issues for each file independently (in Apply
) or collect
information and report after all files have been checked (in Finish
).
The ID follows this pattern: package.name