importas: detect duplicate alias or package in the configuration (#3753)

This commit is contained in:
Ludovic Fernandez 2023-04-04 09:16:10 +02:00 committed by GitHub
parent 00d17cc8d1
commit 51f8a6141c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -36,12 +36,26 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter {
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
}
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)
continue
}
if v, ok := uniqPackages[a.Pkg]; ok {
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)