From 40988401bd0f69176a438549cb1640cdeffa2746 Mon Sep 17 00:00:00 2001 From: sadayuki-matsuno Date: Fri, 4 Jun 2021 07:42:29 +0900 Subject: [PATCH] feat(scanner) separate func analize libraries (#1246) * feat(scanner) separate func analize libraries * fix(scanner) fix typo --- scanner/base.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/scanner/base.go b/scanner/base.go index 0bd5912f..b1f28435 100644 --- a/scanner/base.go +++ b/scanner/base.go @@ -615,6 +615,15 @@ func (l *base) scanLibraries() (err error) { libFilemap[path] = bytes } + var libraryScanners []models.LibraryScanner + if libraryScanners, err = AnalyzeLibraries(context.Background(), libFilemap); err != nil { + return err + } + l.LibraryScanners = append(l.LibraryScanners, libraryScanners...) + return nil +} + +func AnalyzeLibraries(ctx context.Context, libFilemap map[string][]byte) (libraryScanners []models.LibraryScanner, err error) { disabledAnalyzers := []analyzer.Type{ analyzer.TypeAlpine, analyzer.TypeAmazon, @@ -642,24 +651,24 @@ func (l *base) scanLibraries() (err error) { var wg sync.WaitGroup result := new(analyzer.AnalysisResult) if err := anal.AnalyzeFile( - context.Background(), + ctx, &wg, semaphore.NewWeighted(1), result, path, &DummyFileInfo{}, func() ([]byte, error) { return b, nil }); err != nil { - return xerrors.Errorf("Failed to get libs. err: %w", err) + return nil, xerrors.Errorf("Failed to get libs. err: %w", err) } wg.Wait() libscan, err := convertLibWithScanner(result.Applications) if err != nil { - return xerrors.Errorf("Failed to convert libs. err: %w", err) + return nil, xerrors.Errorf("Failed to convert libs. err: %w", err) } - l.LibraryScanners = append(l.LibraryScanners, libscan...) + libraryScanners = append(libraryScanners, libscan...) } - return nil + return libraryScanners, nil } // DummyFileInfo is a dummy struct for libscan