Skip to content

Commit 51f8a61

Browse files
authored
importas: detect duplicate alias or package in the configuration (#3753)
1 parent 00d17cc commit 51f8a61

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

pkg/golinters/importas.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,26 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter {
3636
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
3737
}
3838

39+
uniqPackages := make(map[string]config.ImportAsAlias)
40+
uniqAliases := make(map[string]config.ImportAsAlias)
3941
for _, a := range settings.Alias {
4042
if a.Pkg == "" {
4143
lintCtx.Log.Errorf("invalid configuration, empty package: pkg=%s alias=%s", a.Pkg, a.Alias)
4244
continue
4345
}
4446

47+
if v, ok := uniqPackages[a.Pkg]; ok {
48+
lintCtx.Log.Errorf("invalid configuration, multiple aliases for the same package: pkg=%s aliases=[%s,%s]", a.Pkg, a.Alias, v.Alias)
49+
} else {
50+
uniqPackages[a.Pkg] = a
51+
}
52+
53+
if v, ok := uniqAliases[a.Alias]; ok {
54+
lintCtx.Log.Errorf("invalid configuration, multiple packages with the same alias: pkg=%s packages=[%s,%s]", a.Alias, a.Pkg, v.Pkg)
55+
} else {
56+
uniqAliases[a.Alias] = a
57+
}
58+
4559
err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", a.Pkg, a.Alias))
4660
if err != nil {
4761
lintCtx.Log.Errorf("failed to parse configuration: %v", err)

0 commit comments

Comments
 (0)