# README

awsproviderlint

The awsproviderlint 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 awsproviderlint help NAME.

tfproviderlint Checks

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

AWS Acceptance Test Checks

CheckDescription
AWSAT001check for resource.TestMatchResourceAttr() calls against ARN attributes
AWSAT002check for hardcoded AMI IDs
AWSAT003check for hardcoded regions
AWSAT004check for TestCheckResourceAttr() calls with hardcoded TypeSet state hashes
AWSAT005check for hardcoded AWS partitions in ARNs
AWSAT006check for hardcoded AWS partition DNS suffixes

AWS Resource Checks

CheckDescription
AWSR001check for fmt.Sprintf() calls using .amazonaws.com domain suffix
AWSR002check for d.Set() of tags attribute that should include IgnoreConfig()

Development and Testing

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).

# Packages

No description provided by the author
No description provided by the author