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

     1  package golinters
     2  
     3  import (
     4  	"go.tmz.dev/musttag"
     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 NewMustTag(setting *config.MustTagSettings) *goanalysis.Linter {
    12  	var funcs []musttag.Func
    13  
    14  	if setting != nil {
    15  		for _, fn := range setting.Functions {
    16  			funcs = append(funcs, musttag.Func{
    17  				Name:   fn.Name,
    18  				Tag:    fn.Tag,
    19  				ArgPos: fn.ArgPos,
    20  			})
    21  		}
    22  	}
    23  
    24  	a := musttag.New(funcs...)
    25  
    26  	return goanalysis.
    27  		NewLinter(a.Name, a.Doc, []*analysis.Analyzer{a}, nil).
    28  		WithLoadMode(goanalysis.LoadModeTypesInfo)
    29  }