github.com/nozzle/golangci-lint@v1.49.0-nz3/pkg/golinters/importas.go (about) 1 package golinters 2 3 import ( 4 "fmt" 5 "strconv" 6 7 "github.com/julz/importas" //nolint:misspell 8 "golang.org/x/tools/go/analysis" 9 10 "github.com/golangci/golangci-lint/pkg/config" 11 "github.com/golangci/golangci-lint/pkg/golinters/goanalysis" 12 "github.com/golangci/golangci-lint/pkg/lint/linter" 13 ) 14 15 func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter { 16 analyzer := importas.Analyzer 17 18 return goanalysis.NewLinter( 19 analyzer.Name, 20 analyzer.Doc, 21 []*analysis.Analyzer{analyzer}, 22 nil, 23 ).WithContextSetter(func(lintCtx *linter.Context) { 24 if settings == nil { 25 return 26 } 27 if len(settings.Alias) == 0 { 28 lintCtx.Log.Infof("importas settings found, but no aliases listed. List aliases under alias: key.") //nolint:misspell 29 } 30 31 if err := analyzer.Flags.Set("no-unaliased", strconv.FormatBool(settings.NoUnaliased)); err != nil { 32 lintCtx.Log.Errorf("failed to parse configuration: %v", err) 33 } 34 35 if err := analyzer.Flags.Set("no-extra-aliases", strconv.FormatBool(settings.NoExtraAliases)); err != nil { 36 lintCtx.Log.Errorf("failed to parse configuration: %v", err) 37 } 38 39 for _, a := range settings.Alias { 40 if a.Pkg == "" { 41 lintCtx.Log.Errorf("invalid configuration, empty package: pkg=%s alias=%s", a.Pkg, a.Alias) 42 continue 43 } 44 45 err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", a.Pkg, a.Alias)) 46 if err != nil { 47 lintCtx.Log.Errorf("failed to parse configuration: %v", err) 48 } 49 } 50 }).WithLoadMode(goanalysis.LoadModeTypesInfo) 51 }