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  }