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  }