github.com/vanstinator/golangci-lint@v0.0.0-20240223191551-cc572f00d9d1/pkg/golinters/cyclop.go (about) 1 package golinters 2 3 import ( 4 "github.com/bkielbasa/cyclop/pkg/analyzer" 5 "golang.org/x/tools/go/analysis" 6 7 "github.com/vanstinator/golangci-lint/pkg/config" 8 "github.com/vanstinator/golangci-lint/pkg/golinters/goanalysis" 9 ) 10 11 func NewCyclop(settings *config.Cyclop) *goanalysis.Linter { 12 a := analyzer.NewAnalyzer() 13 14 var cfg map[string]map[string]any 15 if settings != nil { 16 d := map[string]any{ 17 "skipTests": settings.SkipTests, 18 } 19 20 if settings.MaxComplexity != 0 { 21 d["maxComplexity"] = settings.MaxComplexity 22 } 23 24 if settings.PackageAverage != 0 { 25 d["packageAverage"] = settings.PackageAverage 26 } 27 28 cfg = map[string]map[string]any{a.Name: d} 29 } 30 31 return goanalysis.NewLinter( 32 a.Name, 33 "checks function and package cyclomatic complexity", 34 []*analysis.Analyzer{a}, 35 cfg, 36 ).WithLoadMode(goanalysis.LoadModeTypesInfo) 37 }