github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/config/terraformplan/terraformplan.go (about) 1 package terraformplan 2 3 import ( 4 "os" 5 "path/filepath" 6 7 "k8s.io/utils/strings/slices" 8 9 "github.com/devseccon/trivy/pkg/fanal/analyzer" 10 "github.com/devseccon/trivy/pkg/fanal/analyzer/config" 11 "github.com/devseccon/trivy/pkg/misconf" 12 ) 13 14 const ( 15 analyzerType = analyzer.TypeTerraformPlan 16 version = 1 17 ) 18 19 var requiredExts = []string{ 20 ".json", 21 } 22 23 func init() { 24 analyzer.RegisterPostAnalyzer(analyzerType, newTerraformPlanConfigAnalyzer) 25 } 26 27 // terraformPlanConfigAnalyzer is an analyzer for detecting misconfigurations in Terraform files. 28 // It embeds config.Analyzer so it can implement analyzer.PostAnalyzer. 29 type terraformPlanConfigAnalyzer struct { 30 *config.Analyzer 31 } 32 33 func newTerraformPlanConfigAnalyzer(opts analyzer.AnalyzerOptions) (analyzer.PostAnalyzer, error) { 34 a, err := config.NewAnalyzer(analyzerType, version, misconf.NewTerraformPlanScanner, opts) 35 if err != nil { 36 return nil, err 37 } 38 return &terraformPlanConfigAnalyzer{Analyzer: a}, nil 39 } 40 41 // Required overrides config.Analyzer.Required() and checks if the given file is a Terraform file. 42 func (*terraformPlanConfigAnalyzer) Required(filePath string, _ os.FileInfo) bool { 43 return slices.Contains(requiredExts, filepath.Ext(filePath)) 44 }