importas: detect duplicate alias or package in the configuration (#3753)
This commit is contained in:
parent
00d17cc8d1
commit
51f8a6141c
@ -36,12 +36,26 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter {
|
|||||||
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
|
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 {
|
for _, a := range settings.Alias {
|
||||||
if a.Pkg == "" {
|
if a.Pkg == "" {
|
||||||
lintCtx.Log.Errorf("invalid configuration, empty package: pkg=%s alias=%s", a.Pkg, a.Alias)
|
lintCtx.Log.Errorf("invalid configuration, empty package: pkg=%s alias=%s", a.Pkg, a.Alias)
|
||||||
continue
|
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))
|
err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", a.Pkg, a.Alias))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
|
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user