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  }