github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/java/pom/pom.go (about) 1 package pom 2 3 import ( 4 "context" 5 "os" 6 "path/filepath" 7 8 "golang.org/x/xerrors" 9 10 "github.com/aquasecurity/go-dep-parser/pkg/java/pom" 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(&pomAnalyzer{}) 18 } 19 20 const version = 1 21 22 // pomAnalyzer analyzes pom.xml 23 type pomAnalyzer struct{} 24 25 func (a pomAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 26 p := pom.NewParser(filepath.Join(input.Dir, input.FilePath), pom.WithOffline(input.Options.Offline)) 27 res, err := language.Analyze(types.Pom, input.FilePath, input.Content, p) 28 if err != nil { 29 return nil, xerrors.Errorf("%s parse error: %w", input.FilePath, err) 30 } 31 return res, nil 32 } 33 34 func (a pomAnalyzer) Required(filePath string, _ os.FileInfo) bool { 35 return filepath.Base(filePath) == types.MavenPom 36 } 37 38 func (a pomAnalyzer) Type() analyzer.Type { 39 return analyzer.TypePom 40 } 41 42 func (a pomAnalyzer) Version() int { 43 return version 44 }