dependabot[bot] affa7d119c
build(deps): bump github.com/OpenPeeDeeP/depguard/v2 from 2.1.0 to 2.2.0 (#4207)
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2023-11-17 10:49:40 +01:00

51 lines
1.2 KiB
Go

package golinters
import (
"github.com/OpenPeeDeeP/depguard/v2"
"golang.org/x/tools/go/analysis"
"github.com/golangci/golangci-lint/pkg/config"
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis"
"github.com/golangci/golangci-lint/pkg/lint/linter"
)
func NewDepguard(settings *config.DepGuardSettings) *goanalysis.Linter {
conf := depguard.LinterSettings{}
if settings != nil {
for s, rule := range settings.Rules {
list := &depguard.List{
ListMode: rule.ListMode,
Files: rule.Files,
Allow: rule.Allow,
}
// because of bug with Viper parsing (split on dot) we use a list of struct instead of a map.
// https://github.com/spf13/viper/issues/324
// https://github.com/golangci/golangci-lint/issues/3749#issuecomment-1492536630
deny := map[string]string{}
for _, r := range rule.Deny {
deny[r.Pkg] = r.Desc
}
list.Deny = deny
conf[s] = list
}
}
a := depguard.NewUncompiledAnalyzer(&conf)
return goanalysis.NewLinter(
a.Analyzer.Name,
a.Analyzer.Doc,
[]*analysis.Analyzer{a.Analyzer},
nil,
).WithContextSetter(func(lintCtx *linter.Context) {
err := a.Compile()
if err != nil {
lintCtx.Log.Errorf("create analyzer: %v", err)
}
}).WithLoadMode(goanalysis.LoadModeSyntax)
}