providerlint

command module
v0.0.0-...-724c62b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2022 License: MPL-2.0 Imports: 5 Imported by: 0

README

providerlint

The providerlint tool is a Terraform Provider code linting tool, specifically tailored for the Terraform AWS Provider.

Lint Checks

For additional information about each check, you can run providerlint help NAME.

tfproviderlint Checks

The providerlint tool extends the tfproviderlint tool and its checks. See the tfproviderlint documentation for additional information about the checks it provides.

AWS Acceptance Test Checks
Check Description
AWSAT001 check for resource.TestMatchResourceAttr() calls against ARN attributes
AWSAT002 check for hardcoded AMI IDs
AWSAT003 check for hardcoded regions
AWSAT004 check for TestCheckResourceAttr() calls with hardcoded TypeSet state hashes
AWSAT005 check for hardcoded AWS partitions in ARNs
AWSAT006 check for hardcoded AWS partition DNS suffixes
AWS Resource Checks
Check Description
AWSR001 check for fmt.Sprintf() calls using .amazonaws.com domain suffix
AWSR002 check for d.Set() of tags attribute that should include IgnoreConfig()
AWS Validation Checks
Check Description
AWSV001 check for validation.StringInSlice() calls using []string parameter

Development and Testing

WARNING: The vendor directory for this module is required, because the analysistest package, the testing framework for the go/analysis framework, does not support Go Modules.

This project is built on the tfproviderlint project and the go/analysis framework.

Helpful tooling for development:

  • astdump: a tool for displaying the AST form of Go file
Unit Testing
$ go test ./...
Adding an Analyzer

NOTE: Provider-specific analyzers should implement their own namespace outside tfproviderlint's AT### (acceptance testing), R### (resource), and S### (schema) to prevent naming collisions.

  • Create new analyzer directory in passes/. The new directory name should match the name of the new analyzer.
    • Add passes/NAME/README.md which documents at least a description of analyzer.
    • Add passes/NAME/NAME.go which implements Analyzer.
    • If analyzer is a full check:
      • Include passing and failing example code in passes/NAME/README.md.
      • Add passes/NAME/NAME_test.go which implements analysistest.TestData() and analysistest.Run().
      • Add passes/NAME/testdata/src/a directory with Go source files that implement passing and failing code based on analysistest framework.
      • Since the analysistest package does not support Go Modules currently, each analyzer that implements testing must add a symlink to the top level vendor directory in the testdata/src/a directory. e.g. ln -s ../../../../../vendor passes/NAME/testdata/src/a/vendor.
  • Add new link to new analyzer in README.md (this file).

Documentation

Overview

The providerlint command is a static checker for the Terraform AWS Provider.

Directories

Path Synopsis
helper
AWSAT002
Package AWSAT002 defines an Analyzer that checks for hardcoded AMI IDs
Package AWSAT002 defines an Analyzer that checks for hardcoded AMI IDs
AWSAT003
Package AWSAT003 defines an Analyzer that checks for hardcoded regions
Package AWSAT003 defines an Analyzer that checks for hardcoded regions
AWSAT004
Package AWSAT004 defines an Analyzer that checks for TestCheckResourceAttr() calls with hardcoded TypeSet state hashes
Package AWSAT004 defines an Analyzer that checks for TestCheckResourceAttr() calls with hardcoded TypeSet state hashes
AWSAT005
Package AWSAT005 defines an Analyzer that checks for hardcoded AWS partitions in ARNs
Package AWSAT005 defines an Analyzer that checks for hardcoded AWS partitions in ARNs
AWSAT006
Package AWSAT006 defines an Analyzer that checks for hardcoded AWS partition DNS suffixes
Package AWSAT006 defines an Analyzer that checks for hardcoded AWS partition DNS suffixes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL