The providerlint
tool is a Terraform Provider code linting tool, specifically tailored for the Terraform AWS Provider.
For additional information about each check, you can run providerlint help NAME
.
The providerlint
tool extends the tfproviderlint
tool and its checks. See the tfproviderlint
documentation for additional information about the checks it provides.
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 |
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() |
Check | Description |
---|---|
AWSV001 | check for validation.StringInSlice() calls using []string parameter |
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
$ go test ./...
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 implementsAnalyzer
. - If analyzer is a full check:
- Include passing and failing example code in
passes/NAME/README.md
. - Add
passes/NAME/NAME_test.go
which implementsanalysistest.TestData()
andanalysistest.Run()
. - Add
passes/NAME/testdata/src/a
directory with Go source files that implement passing and failing code based onanalysistest
framework. - Since the
analysistest
package does not support Go Modules currently, each analyzer that implements testing must add a symlink to the top levelvendor
directory in thetestdata/src/a
directory. e.g.ln -s ../../../../../vendor passes/NAME/testdata/src/a/vendor
.
- Include passing and failing example code in
- Add
- Add new link to new analyzer in
README.md
(this file).