github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/java/gradle/lockfile.go (about) 1 package gradle 2 3 import ( 4 "context" 5 "os" 6 "strings" 7 8 "golang.org/x/xerrors" 9 10 "github.com/aquasecurity/go-dep-parser/pkg/gradle/lockfile" 11 "github.com/devseccon/trivy/pkg/fanal/analyzer" 12 "github.com/devseccon/trivy/pkg/fanal/analyzer/language" 13 "github.com/devseccon/trivy/pkg/fanal/types" 14 ) 15 16 func init() { 17 analyzer.RegisterAnalyzer(&gradleLockAnalyzer{}) 18 } 19 20 const ( 21 version = 1 22 fileNameSuffix = "gradle.lockfile" 23 ) 24 25 // gradleLockAnalyzer analyzes '*gradle.lockfile' 26 type gradleLockAnalyzer struct{} 27 28 func (a gradleLockAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 29 p := lockfile.NewParser() 30 res, err := language.Analyze(types.Gradle, input.FilePath, input.Content, p) 31 if err != nil { 32 return nil, xerrors.Errorf("%s parse error: %w", input.FilePath, err) 33 } 34 return res, nil 35 } 36 37 func (a gradleLockAnalyzer) Required(filePath string, _ os.FileInfo) bool { 38 return strings.HasSuffix(filePath, fileNameSuffix) 39 } 40 41 func (a gradleLockAnalyzer) Type() analyzer.Type { 42 return analyzer.TypeGradleLock 43 } 44 45 func (a gradleLockAnalyzer) Version() int { 46 return version 47 }