From 22f4ec9506bb6e7e43fb45eb91f0333a7ee6b245 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sun, 2 Apr 2023 11:31:32 +0200 Subject: [PATCH 1/2] importas: detect multiple aliases for the same package --- pkg/golinters/importas.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/golinters/importas.go b/pkg/golinters/importas.go index 1917bbb0c68b..f1b8b9d21b41 100644 --- a/pkg/golinters/importas.go +++ b/pkg/golinters/importas.go @@ -36,12 +36,19 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter { lintCtx.Log.Errorf("failed to parse configuration: %v", err) } + uniqPackages := make(map[string]config.ImportAsAlias) for _, a := range settings.Alias { if a.Pkg == "" { lintCtx.Log.Errorf("invalid configuration, empty package: pkg=%s alias=%s", a.Pkg, a.Alias) continue } + if v, ok := uniqPackages[a.Pkg]; ok { + lintCtx.Log.Errorf("invalid configuration, two aliases for the same package: pkg=%s aliases=[%s,%s]", a.Pkg, a.Alias, v.Alias) + } else { + uniqPackages[a.Pkg] = a + } + err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", a.Pkg, a.Alias)) if err != nil { lintCtx.Log.Errorf("failed to parse configuration: %v", err) From 2fbea7ab039e7d9d45d79e317529704f7155166a Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sun, 2 Apr 2023 11:40:45 +0200 Subject: [PATCH 2/2] importas: detect multiple packages with the same alias --- pkg/golinters/importas.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/golinters/importas.go b/pkg/golinters/importas.go index f1b8b9d21b41..dbc4e91b274f 100644 --- a/pkg/golinters/importas.go +++ b/pkg/golinters/importas.go @@ -37,6 +37,7 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter { } uniqPackages := make(map[string]config.ImportAsAlias) + uniqAliases := make(map[string]config.ImportAsAlias) for _, a := range settings.Alias { if a.Pkg == "" { lintCtx.Log.Errorf("invalid configuration, empty package: pkg=%s alias=%s", a.Pkg, a.Alias) @@ -44,11 +45,17 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter { } if v, ok := uniqPackages[a.Pkg]; ok { - lintCtx.Log.Errorf("invalid configuration, two aliases for the same package: pkg=%s aliases=[%s,%s]", a.Pkg, a.Alias, v.Alias) + lintCtx.Log.Errorf("invalid configuration, multiple aliases for the same package: pkg=%s aliases=[%s,%s]", a.Pkg, a.Alias, v.Alias) } else { uniqPackages[a.Pkg] = a } + if v, ok := uniqAliases[a.Alias]; ok { + lintCtx.Log.Errorf("invalid configuration, multiple packages with the same alias: pkg=%s packages=[%s,%s]", a.Alias, a.Pkg, v.Pkg) + } else { + uniqAliases[a.Alias] = a + } + err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", a.Pkg, a.Alias)) if err != nil { lintCtx.Log.Errorf("failed to parse configuration: %v", err)