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  }