github.com/jpreese/tflint@v0.19.2-0.20200908152133-b01686250fb6/rules/terraformrules/terraform_documented_variables.go (about) 1 package terraformrules 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/terraform-linters/tflint/tflint" 8 ) 9 10 // TerraformDocumentedVariablesRule checks whether variables have descriptions 11 type TerraformDocumentedVariablesRule struct{} 12 13 // NewTerraformDocumentedVariablesRule returns a new rule 14 func NewTerraformDocumentedVariablesRule() *TerraformDocumentedVariablesRule { 15 return &TerraformDocumentedVariablesRule{} 16 } 17 18 // Name returns the rule name 19 func (r *TerraformDocumentedVariablesRule) Name() string { 20 return "terraform_documented_variables" 21 } 22 23 // Enabled returns whether the rule is enabled by default 24 func (r *TerraformDocumentedVariablesRule) Enabled() bool { 25 return false 26 } 27 28 // Severity returns the rule severity 29 func (r *TerraformDocumentedVariablesRule) Severity() string { 30 return tflint.NOTICE 31 } 32 33 // Link returns the rule reference link 34 func (r *TerraformDocumentedVariablesRule) Link() string { 35 return tflint.ReferenceLink(r.Name()) 36 } 37 38 // Check checks whether variables have descriptions 39 func (r *TerraformDocumentedVariablesRule) Check(runner *tflint.Runner) error { 40 if !runner.TFConfig.Path.IsRoot() { 41 // This rule does not evaluate child modules. 42 return nil 43 } 44 45 log.Printf("[TRACE] Check `%s` rule for `%s` runner", r.Name(), runner.TFConfigPath()) 46 47 for _, variable := range runner.TFConfig.Module.Variables { 48 if variable.Description == "" { 49 runner.EmitIssue( 50 r, 51 fmt.Sprintf("`%s` variable has no description", variable.Name), 52 variable.DeclRange, 53 ) 54 } 55 } 56 57 return nil 58 }