github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/c/conan/conan.go (about) 1 package conan 2 3 import ( 4 "context" 5 "os" 6 7 "golang.org/x/xerrors" 8 9 "github.com/aquasecurity/go-dep-parser/pkg/c/conan" 10 "github.com/devseccon/trivy/pkg/fanal/analyzer" 11 "github.com/devseccon/trivy/pkg/fanal/analyzer/language" 12 "github.com/devseccon/trivy/pkg/fanal/types" 13 ) 14 15 func init() { 16 analyzer.RegisterAnalyzer(&conanLockAnalyzer{}) 17 } 18 19 const ( 20 version = 1 21 ) 22 23 // conanLockAnalyzer analyzes conan.lock 24 type conanLockAnalyzer struct{} 25 26 func (a conanLockAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 27 p := conan.NewParser() 28 res, err := language.Analyze(types.Conan, input.FilePath, input.Content, p) 29 if err != nil { 30 return nil, xerrors.Errorf("%s parse error: %w", input.FilePath, err) 31 } 32 return res, nil 33 } 34 35 func (a conanLockAnalyzer) Required(_ string, fileInfo os.FileInfo) bool { 36 // Lock file name can be anything 37 // cf. https://docs.conan.io/en/latest/versioning/lockfiles/introduction.html#locking-dependencies 38 // By default, we only check the default filename - `conan.lock`. 39 return fileInfo.Name() == types.ConanLock 40 } 41 42 func (a conanLockAnalyzer) Type() analyzer.Type { 43 return analyzer.TypeConanLock 44 } 45 46 func (a conanLockAnalyzer) Version() int { 47 return version 48 }