github.com/vanstinator/golangci-lint@v0.0.0-20240223191551-cc572f00d9d1/pkg/golinters/varnamelen.go (about) 1 package golinters 2 3 import ( 4 "strconv" 5 "strings" 6 7 "github.com/blizzy78/varnamelen" 8 "golang.org/x/tools/go/analysis" 9 10 "github.com/vanstinator/golangci-lint/pkg/config" 11 "github.com/vanstinator/golangci-lint/pkg/golinters/goanalysis" 12 ) 13 14 func NewVarnamelen(settings *config.VarnamelenSettings) *goanalysis.Linter { 15 analyzer := varnamelen.NewAnalyzer() 16 cfg := map[string]map[string]any{} 17 18 if settings != nil { 19 vnlCfg := map[string]any{ 20 "checkReceiver": strconv.FormatBool(settings.CheckReceiver), 21 "checkReturn": strconv.FormatBool(settings.CheckReturn), 22 "checkTypeParam": strconv.FormatBool(settings.CheckTypeParam), 23 "ignoreNames": strings.Join(settings.IgnoreNames, ","), 24 "ignoreTypeAssertOk": strconv.FormatBool(settings.IgnoreTypeAssertOk), 25 "ignoreMapIndexOk": strconv.FormatBool(settings.IgnoreMapIndexOk), 26 "ignoreChanRecvOk": strconv.FormatBool(settings.IgnoreChanRecvOk), 27 "ignoreDecls": strings.Join(settings.IgnoreDecls, ","), 28 } 29 30 if settings.MaxDistance > 0 { 31 vnlCfg["maxDistance"] = strconv.Itoa(settings.MaxDistance) 32 } 33 if settings.MinNameLength > 0 { 34 vnlCfg["minNameLength"] = strconv.Itoa(settings.MinNameLength) 35 } 36 37 cfg[analyzer.Name] = vnlCfg 38 } 39 40 return goanalysis.NewLinter( 41 analyzer.Name, 42 "checks that the length of a variable's name matches its scope", 43 []*analysis.Analyzer{analyzer}, 44 cfg, 45 ).WithLoadMode(goanalysis.LoadModeTypesInfo) 46 }