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

     1  package golinters
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/xen0n/gosmopolitan"
     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 NewGosmopolitan(s *config.GosmopolitanSettings) *goanalysis.Linter {
    14  	a := gosmopolitan.NewAnalyzer()
    15  
    16  	cfgMap := map[string]map[string]any{}
    17  	if s != nil {
    18  		cfgMap[a.Name] = map[string]any{
    19  			"allowtimelocal":  s.AllowTimeLocal,
    20  			"escapehatches":   strings.Join(s.EscapeHatches, ","),
    21  			"lookattests":     !s.IgnoreTests,
    22  			"watchforscripts": strings.Join(s.WatchForScripts, ","),
    23  		}
    24  	}
    25  
    26  	return goanalysis.NewLinter(
    27  		a.Name,
    28  		a.Doc,
    29  		[]*analysis.Analyzer{a},
    30  		cfgMap,
    31  	).WithLoadMode(goanalysis.LoadModeTypesInfo)
    32  }