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

     1  package golinters
     2  
     3  import (
     4  	"strings"
     5  
     6  	"gitlab.com/bosi/decorder"
     7  	"golang.org/x/tools/go/analysis"
     8  
     9  	"github.com/chenfeining/golangci-lint/pkg/config"
    10  	"github.com/chenfeining/golangci-lint/pkg/golinters/goanalysis"
    11  )
    12  
    13  func NewDecorder(settings *config.DecorderSettings) *goanalysis.Linter {
    14  	a := decorder.Analyzer
    15  
    16  	// disable all rules/checks by default
    17  	cfg := map[string]any{
    18  		"ignore-underscore-vars":        false,
    19  		"disable-dec-num-check":         true,
    20  		"disable-type-dec-num-check":    false,
    21  		"disable-const-dec-num-check":   false,
    22  		"disable-var-dec-num-check":     false,
    23  		"disable-dec-order-check":       true,
    24  		"disable-init-func-first-check": true,
    25  	}
    26  
    27  	if settings != nil {
    28  		cfg["dec-order"] = strings.Join(settings.DecOrder, ",")
    29  		cfg["ignore-underscore-vars"] = settings.IgnoreUnderscoreVars
    30  		cfg["disable-dec-num-check"] = settings.DisableDecNumCheck
    31  		cfg["disable-type-dec-num-check"] = settings.DisableTypeDecNumCheck
    32  		cfg["disable-const-dec-num-check"] = settings.DisableConstDecNumCheck
    33  		cfg["disable-var-dec-num-check"] = settings.DisableVarDecNumCheck
    34  		cfg["disable-dec-order-check"] = settings.DisableDecOrderCheck
    35  		cfg["disable-init-func-first-check"] = settings.DisableInitFuncFirstCheck
    36  	}
    37  
    38  	return goanalysis.NewLinter(
    39  		a.Name,
    40  		a.Doc,
    41  		[]*analysis.Analyzer{a},
    42  		map[string]map[string]any{a.Name: cfg},
    43  	).WithLoadMode(goanalysis.LoadModeSyntax)
    44  }