mirror of
https://github.com/securego/gosec.git
synced 2025-07-13 01:00:25 +02:00
Allow excluding analyzers globally (#1180)
* This change does not exclude analyzers for inline comment * Changed the expected issues count for G103, G109 samples for test. Previously G115 has been included in the issue count * Show analyzers IDs(G115, G602) in gosec usage help * See #1175
This commit is contained in:
18
analyzer.go
18
analyzer.go
@ -182,7 +182,7 @@ type Analyzer struct {
|
||||
showIgnored bool
|
||||
trackSuppressions bool
|
||||
concurrency int
|
||||
analyzerList []*analysis.Analyzer
|
||||
analyzerSet *analyzers.AnalyzerSet
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
@ -213,7 +213,7 @@ func NewAnalyzer(conf Config, tests bool, excludeGenerated bool, trackSuppressio
|
||||
concurrency: concurrency,
|
||||
excludeGenerated: excludeGenerated,
|
||||
trackSuppressions: trackSuppressions,
|
||||
analyzerList: analyzers.BuildDefaultAnalyzers(),
|
||||
analyzerSet: analyzers.NewAnalyzerSet(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -236,6 +236,15 @@ func (gosec *Analyzer) LoadRules(ruleDefinitions map[string]RuleBuilder, ruleSup
|
||||
}
|
||||
}
|
||||
|
||||
// LoadAnalyzers instantiates all the analyzers to be used when analyzing source
|
||||
// packages
|
||||
func (gosec *Analyzer) LoadAnalyzers(analyzerDefinitions map[string]analyzers.AnalyzerDefinition, analyzerSuppressed map[string]bool) {
|
||||
for id, def := range analyzerDefinitions {
|
||||
r := def.Create(def.ID, def.Description)
|
||||
gosec.analyzerSet.Register(r, analyzerSuppressed[id])
|
||||
}
|
||||
}
|
||||
|
||||
// Process kicks off the analysis process for a given package
|
||||
func (gosec *Analyzer) Process(buildTags []string, packagePaths ...string) error {
|
||||
config := &packages.Config{
|
||||
@ -415,7 +424,7 @@ func (gosec *Analyzer) CheckAnalyzers(pkg *packages.Package) {
|
||||
|
||||
generatedFiles := gosec.generatedFiles(pkg)
|
||||
|
||||
for _, analyzer := range gosec.analyzerList {
|
||||
for _, analyzer := range gosec.analyzerSet.Analyzers {
|
||||
pass := &analysis.Pass{
|
||||
Analyzer: analyzer,
|
||||
Fset: pkg.Fset,
|
||||
@ -666,7 +675,7 @@ func (gosec *Analyzer) getSuppressionsAtLineInFile(file string, line string, id
|
||||
suppressions := append(generalSuppressions, ruleSuppressions...)
|
||||
|
||||
// Track external suppressions of this rule.
|
||||
if gosec.ruleset.IsRuleSuppressed(id) {
|
||||
if gosec.ruleset.IsRuleSuppressed(id) || gosec.analyzerSet.IsSuppressed(id) {
|
||||
ignored = true
|
||||
suppressions = append(suppressions, issue.SuppressionInfo{
|
||||
Kind: "external",
|
||||
@ -705,4 +714,5 @@ func (gosec *Analyzer) Reset() {
|
||||
gosec.issues = make([]*issue.Issue, 0, 16)
|
||||
gosec.stats = &Metrics{}
|
||||
gosec.ruleset = NewRuleSet()
|
||||
gosec.analyzerSet = analyzers.NewAnalyzerSet()
|
||||
}
|
||||
|
Reference in New Issue
Block a user