github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/artifact/artifact.go (about) 1 package artifact 2 3 import ( 4 "context" 5 "sort" 6 7 "github.com/devseccon/trivy/pkg/fanal/analyzer" 8 "github.com/devseccon/trivy/pkg/fanal/types" 9 "github.com/devseccon/trivy/pkg/fanal/walker" 10 "github.com/devseccon/trivy/pkg/misconf" 11 ) 12 13 type Option struct { 14 AnalyzerGroup analyzer.Group // It is empty in OSS 15 DisabledAnalyzers []analyzer.Type 16 DisabledHandlers []types.HandlerType 17 SkipFiles []string 18 SkipDirs []string 19 FilePatterns []string 20 NoProgress bool 21 Insecure bool 22 Offline bool 23 AppDirs []string 24 SBOMSources []string 25 RekorURL string 26 Parallel int 27 AWSRegion string 28 AWSEndpoint string 29 FileChecksum bool // For SPDX 30 31 // Git repositories 32 RepoBranch string 33 RepoCommit string 34 RepoTag string 35 36 // For image scanning 37 ImageOption types.ImageOptions 38 39 MisconfScannerOption misconf.ScannerOption 40 SecretScannerOption analyzer.SecretScannerOption 41 LicenseScannerOption analyzer.LicenseScannerOption 42 43 // File walk 44 WalkOption WalkOption 45 } 46 47 // WalkOption is a struct that allows users to define a custom walking behavior. 48 // This option is only available when using Trivy as an imported library and not through CLI flags. 49 type WalkOption struct { 50 ErrorCallback walker.ErrorCallback 51 } 52 53 func (o *Option) AnalyzerOptions() analyzer.AnalyzerOptions { 54 return analyzer.AnalyzerOptions{ 55 Group: o.AnalyzerGroup, 56 FilePatterns: o.FilePatterns, 57 Parallel: o.Parallel, 58 DisabledAnalyzers: o.DisabledAnalyzers, 59 MisconfScannerOption: o.MisconfScannerOption, 60 SecretScannerOption: o.SecretScannerOption, 61 LicenseScannerOption: o.LicenseScannerOption, 62 } 63 } 64 65 func (o *Option) ConfigAnalyzerOptions() analyzer.ConfigAnalyzerOptions { 66 return analyzer.ConfigAnalyzerOptions{ 67 FilePatterns: o.FilePatterns, 68 DisabledAnalyzers: o.DisabledAnalyzers, 69 MisconfScannerOption: o.MisconfScannerOption, 70 SecretScannerOption: o.SecretScannerOption, 71 } 72 } 73 74 func (o *Option) Sort() { 75 sort.Slice(o.DisabledAnalyzers, func(i, j int) bool { 76 return o.DisabledAnalyzers[i] < o.DisabledAnalyzers[j] 77 }) 78 sort.Strings(o.SkipFiles) 79 sort.Strings(o.SkipDirs) 80 sort.Strings(o.FilePatterns) 81 } 82 83 type Artifact interface { 84 Inspect(ctx context.Context) (reference types.ArtifactReference, err error) 85 Clean(reference types.ArtifactReference) error 86 }