github.com/chenfeining/golangci-lint@v1.0.2-0.20230730162517-14c6c67868df/pkg/golinters/loggercheck.go (about) 1 package golinters 2 3 import ( 4 "github.com/timonwong/loggercheck" 5 "golang.org/x/tools/go/analysis" 6 7 "github.com/chenfeining/golangci-lint/pkg/config" 8 "github.com/chenfeining/golangci-lint/pkg/golinters/goanalysis" 9 ) 10 11 func NewLoggerCheck(settings *config.LoggerCheckSettings) *goanalysis.Linter { 12 var opts []loggercheck.Option 13 14 if settings != nil { 15 var disable []string 16 if !settings.Kitlog { 17 disable = append(disable, "kitlog") 18 } 19 if !settings.Klog { 20 disable = append(disable, "klog") 21 } 22 if !settings.Logr { 23 disable = append(disable, "logr") 24 } 25 if !settings.Zap { 26 disable = append(disable, "zap") 27 } 28 29 opts = []loggercheck.Option{ 30 loggercheck.WithDisable(disable), 31 loggercheck.WithRequireStringKey(settings.RequireStringKey), 32 loggercheck.WithRules(settings.Rules), 33 loggercheck.WithNoPrintfLike(settings.NoPrintfLike), 34 } 35 } 36 37 analyzer := loggercheck.NewAnalyzer(opts...) 38 return goanalysis.NewLinter( 39 analyzer.Name, 40 analyzer.Doc, 41 []*analysis.Analyzer{analyzer}, 42 nil, 43 ).WithLoadMode(goanalysis.LoadModeTypesInfo) 44 }