Skip to content

Commit 5c6adb6

Browse files
authored
importas: allow repeated aliases (#1960)
1 parent 07a0568 commit 5c6adb6

File tree

7 files changed

+37
-10
lines changed

7 files changed

+37
-10
lines changed

.golangci.example.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -410,13 +410,16 @@ linters-settings:
410410
# List of aliases
411411
alias:
412412
# using `servingv1` alias for `knative.dev/serving/pkg/apis/serving/v1` package
413-
servingv1: knative.dev/serving/pkg/apis/serving/v1
413+
- pkg: knative.dev/serving/pkg/apis/serving/v1
414+
alias: servingv1
414415
# using `autoscalingv1alpha1` alias for `knative.dev/serving/pkg/apis/autoscaling/v1alpha1` package
415-
autoscalingv1alpha1: knative.dev/serving/pkg/apis/autoscaling/v1alpha1
416+
- pkg: knative.dev/serving/pkg/apis/autoscaling/v1alpha1
417+
alias: autoscalingv1alpha1
416418
# You can specify the package path by regular expression,
417419
# and alias by regular expression expansion syntax like below.
418420
# see https://github.com/julz/importas#use-regular-expression for details
419-
"$1$2": 'knative.dev/serving/pkg/apis/(\w+)/(v[\w\d]+)'
421+
- pkg: knative.dev/serving/pkg/apis/(\w+)/(v[\w\d]+)
422+
alias: $1$2
420423

421424
lll:
422425
# max line length, lines longer will be reported. Default is 120.

pkg/config/linters_settings.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,15 @@ type IfshortSettings struct {
312312
}
313313

314314
type ImportAsSettings struct {
315-
Alias map[string]string
315+
Alias []ImportAsAlias
316316
NoUnaliased bool `mapstructure:"no-unaliased"`
317317
}
318318

319+
type ImportAsAlias struct {
320+
Pkg string
321+
Alias string
322+
}
323+
319324
type LllSettings struct {
320325
LineLength int `mapstructure:"line-length"`
321326
TabWidth int `mapstructure:"tab-width"`

pkg/golinters/importas.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter {
3333
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
3434
}
3535

36-
for alias, pkg := range settings.Alias {
37-
err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", pkg, alias))
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))
3843
if err != nil {
3944
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
4045
}

test/testdata/configs/importas.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
linters-settings:
22
importas:
33
alias:
4-
fff: fmt
5-
std_os: os
4+
- pkg: fmt
5+
alias: fff
6+
- pkg: os
7+
alias: std_os
8+
- pkg: github.com/pkg/errors
9+
alias: pkgerr

test/testdata/configs/importas_strict.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,9 @@ linters-settings:
22
importas:
33
no-unaliased: true
44
alias:
5-
fff: fmt
6-
std_os: os
5+
- pkg: fmt
6+
alias: fff
7+
- pkg: os
8+
alias: std_os
9+
- pkg: github.com/pkg/errors
10+
alias: pkgerr

test/testdata/importas.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ import (
66
wrong_alias "fmt" // ERROR `import "fmt" imported as "wrong_alias" but must be "fff" according to config`
77
"os"
88
wrong_alias_again "os" // ERROR `import "os" imported as "wrong_alias_again" but must be "std_os" according to config`
9+
10+
wrong "github.com/pkg/errors" // ERROR `import "github.com/pkg/errors" imported as "wrong" but must be "pkgerr" according to config`
911
)
1012

1113
func ImportAsWrongAlias() {
1214
wrong_alias.Println("foo")
1315
wrong_alias_again.Stdout.WriteString("bar")
1416
os.Stdout.WriteString("test")
17+
_ = wrong.New("baz")
1518
}

test/testdata/importas_strict.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ import (
66
wrong_alias "fmt" // ERROR `import "fmt" imported as "wrong_alias" but must be "fff" according to config`
77
"os" // ERROR `import "os" imported without alias but must be with alias "std_os" according to config`
88
wrong_alias_again "os" // ERROR `import "os" imported as "wrong_alias_again" but must be "std_os" according to config`
9+
10+
wrong "github.com/pkg/errors" // ERROR `import "github.com/pkg/errors" imported as "wrong" but must be "pkgerr" according to config`
911
)
1012

1113
func ImportAsStrictWrongAlias() {
1214
wrong_alias.Println("foo")
1315
wrong_alias_again.Stdout.WriteString("bar")
1416
os.Stdout.WriteString("test")
17+
_ = wrong.New("baz")
1518
}

0 commit comments

Comments
 (0)