1package composer 2 3import ( 4 "os" 5 "path/filepath" 6 7 "github.com/aquasecurity/go-dep-parser/pkg/composer" 8 9 "golang.org/x/xerrors" 10 11 "github.com/aquasecurity/fanal/analyzer" 12 "github.com/aquasecurity/fanal/analyzer/library" 13 "github.com/aquasecurity/fanal/utils" 14) 15 16func init() { 17 analyzer.RegisterAnalyzer(&composerLibraryAnalyzer{}) 18} 19 20var ( 21 requiredFiles = []string{"composer.lock"} 22) 23 24type composerLibraryAnalyzer struct{} 25 26func (a composerLibraryAnalyzer) Analyze(content []byte) (analyzer.AnalyzeReturn, error) { 27 ret, err := library.Analyze(content, composer.Parse) 28 if err != nil { 29 return analyzer.AnalyzeReturn{}, xerrors.Errorf("error with composer.lock: %w", err) 30 } 31 return ret, nil 32} 33 34func (a composerLibraryAnalyzer) Required(filePath string, _ os.FileInfo) bool { 35 fileName := filepath.Base(filePath) 36 return utils.StringInSlice(fileName, requiredFiles) 37} 38 39func (a composerLibraryAnalyzer) Name() string { 40 return library.Composer 41} 42