gomodguard: fix problem where duplicate issues were being reported (#2018)
This commit is contained in:
parent
b916c9318b
commit
7776b546b8
2
go.mod
2
go.mod
@ -58,7 +58,7 @@ require (
|
||||
github.com/nishanths/predeclared v0.2.1
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/polyfloyd/go-errorlint v0.0.0-20210510181950-ab96adb96fea
|
||||
github.com/ryancurrah/gomodguard v1.2.0
|
||||
github.com/ryancurrah/gomodguard v1.2.1
|
||||
github.com/ryanrolds/sqlclosecheck v0.3.0
|
||||
github.com/sanposhiho/wastedassign v1.0.0
|
||||
github.com/securego/gosec/v2 v2.7.0
|
||||
|
4
go.sum
generated
4
go.sum
generated
@ -539,8 +539,8 @@ github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE
|
||||
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/ryancurrah/gomodguard v1.2.0 h1:YWfhGOrXwLGiqcC/u5EqG6YeS8nh+1fw0HEc85CVZro=
|
||||
github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ=
|
||||
github.com/ryancurrah/gomodguard v1.2.1 h1:t1WWL0RGJJBo5KZ0u2c/FGY1QQgx2gUbHWzBmOKWs98=
|
||||
github.com/ryancurrah/gomodguard v1.2.1/go.mod h1:tpI+C/nzvfUR3bF28b5QHpTn/jM/zlGniI++6ZlIWeE=
|
||||
github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw=
|
||||
github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA=
|
||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
|
@ -13,6 +13,9 @@ import (
|
||||
|
||||
const (
|
||||
gomodguardName = "gomodguard"
|
||||
gomodguardDesc = "Allow and block list linter for direct Go module dependencies. " +
|
||||
"This is different from depguard where there are different block " +
|
||||
"types for example version constraints and module recommendations."
|
||||
)
|
||||
|
||||
// NewGomodguard returns a new Gomodguard linter.
|
||||
@ -28,20 +31,17 @@ func NewGomodguard() *goanalysis.Linter {
|
||||
|
||||
return goanalysis.NewLinter(
|
||||
gomodguardName,
|
||||
"Allow and block list linter for direct Go module dependencies. "+
|
||||
"This is different from depguard where there are different block "+
|
||||
"types for example version constraints and module recommendations.",
|
||||
gomodguardDesc,
|
||||
[]*analysis.Analyzer{analyzer},
|
||||
nil,
|
||||
).WithContextSetter(func(lintCtx *linter.Context) {
|
||||
analyzer.Run = func(pass *analysis.Pass) (interface{}, error) {
|
||||
var (
|
||||
files = []string{}
|
||||
linterCfg = lintCtx.Cfg.LintersSettings.Gomodguard
|
||||
processorCfg = &gomodguard.Configuration{}
|
||||
)
|
||||
linterCfg := lintCtx.Cfg.LintersSettings.Gomodguard
|
||||
|
||||
processorCfg := &gomodguard.Configuration{}
|
||||
processorCfg.Allowed.Modules = linterCfg.Allowed.Modules
|
||||
processorCfg.Allowed.Domains = linterCfg.Allowed.Domains
|
||||
processorCfg.Blocked.LocalReplaceDirectives = linterCfg.Blocked.LocalReplaceDirectives
|
||||
|
||||
for n := range linterCfg.Blocked.Modules {
|
||||
for k, v := range linterCfg.Blocked.Modules[n] {
|
||||
m := map[string]gomodguard.BlockedModule{k: {
|
||||
@ -64,32 +64,30 @@ func NewGomodguard() *goanalysis.Linter {
|
||||
}
|
||||
}
|
||||
|
||||
for _, file := range pass.Files {
|
||||
files = append(files, pass.Fset.PositionFor(file.Pos(), false).Filename)
|
||||
}
|
||||
|
||||
processorCfg.Blocked.LocalReplaceDirectives = linterCfg.Blocked.LocalReplaceDirectives
|
||||
|
||||
processor, err := gomodguard.NewProcessor(processorCfg)
|
||||
if err != nil {
|
||||
lintCtx.Log.Warnf("running gomodguard failed: %s: if you are not using go modules "+
|
||||
"it is suggested to disable this linter", err)
|
||||
return nil, nil
|
||||
return
|
||||
}
|
||||
|
||||
gomodguardErrors := processor.ProcessFiles(files)
|
||||
if len(gomodguardErrors) == 0 {
|
||||
return nil, nil
|
||||
analyzer.Run = func(pass *analysis.Pass) (interface{}, error) {
|
||||
var files []string
|
||||
|
||||
for _, file := range pass.Files {
|
||||
files = append(files, pass.Fset.PositionFor(file.Pos(), false).Filename)
|
||||
}
|
||||
|
||||
gomodguardIssues := processor.ProcessFiles(files)
|
||||
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
|
||||
for _, err := range gomodguardErrors {
|
||||
for _, gomodguardIssue := range gomodguardIssues {
|
||||
issues = append(issues, goanalysis.NewIssue(&result.Issue{
|
||||
FromLinter: gomodguardName,
|
||||
Pos: err.Position,
|
||||
Text: err.Reason,
|
||||
Pos: gomodguardIssue.Position,
|
||||
Text: gomodguardIssue.Reason,
|
||||
}, pass))
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user