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