github.com/elek/golangci-lint@v1.42.2-0.20211208090441-c05b7fcb3a9a/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/elek/golangci-lint/pkg/config" 11 "github.com/elek/golangci-lint/pkg/golinters/goanalysis" 12 "github.com/elek/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 err := analyzer.Flags.Set("no-unaliased", strconv.FormatBool(settings.NoUnaliased)) 32 if err != nil { 33 lintCtx.Log.Errorf("failed to parse configuration: %v", err) 34 } 35 36 for _, a := range settings.Alias { 37 if a.Pkg == "" { 38 lintCtx.Log.Errorf("invalid configuration, empty package: pkg=%s alias=%s", a.Pkg, a.Alias) 39 continue 40 } 41 42 err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", a.Pkg, a.Alias)) 43 if err != nil { 44 lintCtx.Log.Errorf("failed to parse configuration: %v", err) 45 } 46 } 47 }).WithLoadMode(goanalysis.LoadModeTypesInfo) 48 }