github.com/chenfeining/golangci-lint@v1.0.2-0.20230730162517-14c6c67868df/pkg/golinters/tagliatelle.go (about)

     1  package golinters
     2  
     3  import (
     4  	"github.com/ldez/tagliatelle"
     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 NewTagliatelle(settings *config.TagliatelleSettings) *goanalysis.Linter {
    12  	cfg := tagliatelle.Config{
    13  		Rules: map[string]string{
    14  			"json":   "camel",
    15  			"yaml":   "camel",
    16  			"header": "header",
    17  		},
    18  	}
    19  
    20  	if settings != nil {
    21  		for k, v := range settings.Case.Rules {
    22  			cfg.Rules[k] = v
    23  		}
    24  		cfg.UseFieldName = settings.Case.UseFieldName
    25  	}
    26  
    27  	a := tagliatelle.New(cfg)
    28  
    29  	return goanalysis.NewLinter(
    30  		a.Name,
    31  		a.Doc,
    32  		[]*analysis.Analyzer{a},
    33  		nil,
    34  	).WithLoadMode(goanalysis.LoadModeSyntax)
    35  }