Skip to content

Commit

Permalink
Allow repeated importas aliases
Browse files Browse the repository at this point in the history
The standalone importas takes arguments in the form "{package}:{alias}"
and stores them in a map in which package is the key. The intent is to
describe the one alias that is appropriate for a unique package path.

This aligns our configuration with the standalone tool.
  • Loading branch information
cbandy committed May 7, 2021
1 parent 07a0568 commit 49babc0
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 11 deletions.
6 changes: 3 additions & 3 deletions .golangci.example.yml
Expand Up @@ -410,13 +410,13 @@ linters-settings:
# List of aliases
alias:
# using `servingv1` alias for `knative.dev/serving/pkg/apis/serving/v1` package
servingv1: knative.dev/serving/pkg/apis/serving/v1
- knative.dev/serving/pkg/apis/serving/v1:servingv1
# using `autoscalingv1alpha1` alias for `knative.dev/serving/pkg/apis/autoscaling/v1alpha1` package
autoscalingv1alpha1: knative.dev/serving/pkg/apis/autoscaling/v1alpha1
- knative.dev/serving/pkg/apis/autoscaling/v1alpha1:autoscalingv1alpha1
# You can specify the package path by regular expression,
# and alias by regular expression expansion syntax like below.
# see https://github.com/julz/importas#use-regular-expression for details
"$1$2": 'knative.dev/serving/pkg/apis/(\w+)/(v[\w\d]+)'
- 'knative.dev/serving/pkg/apis/(\w+)/(v[\w\d]+):$1$2'

lll:
# max line length, lines longer will be reported. Default is 120.
Expand Down
2 changes: 1 addition & 1 deletion pkg/config/linters_settings.go
Expand Up @@ -312,7 +312,7 @@ type IfshortSettings struct {
}

type ImportAsSettings struct {
Alias map[string]string
Alias []string
NoUnaliased bool `mapstructure:"no-unaliased"`
}

Expand Down
5 changes: 2 additions & 3 deletions pkg/golinters/importas.go
@@ -1,7 +1,6 @@
package golinters

import (
"fmt"
"strconv"

"github.com/julz/importas" // nolint: misspell
Expand Down Expand Up @@ -33,8 +32,8 @@ func NewImportAs(settings *config.ImportAsSettings) *goanalysis.Linter {
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
}

for alias, pkg := range settings.Alias {
err := analyzer.Flags.Set("alias", fmt.Sprintf("%s:%s", pkg, alias))
for i := range settings.Alias {
err := analyzer.Flags.Set("alias", settings.Alias[i])
if err != nil {
lintCtx.Log.Errorf("failed to parse configuration: %v", err)
}
Expand Down
5 changes: 3 additions & 2 deletions test/testdata/configs/importas.yml
@@ -1,5 +1,6 @@
linters-settings:
importas:
alias:
fff: fmt
std_os: os
- fmt:fff
- os:std_os
- github.com/pkg/errors:pkgerr
5 changes: 3 additions & 2 deletions test/testdata/configs/importas_strict.yml
Expand Up @@ -2,5 +2,6 @@ linters-settings:
importas:
no-unaliased: true
alias:
fff: fmt
std_os: os
- fmt:fff
- os:std_os
- github.com/pkg/errors:pkgerr
3 changes: 3 additions & 0 deletions test/testdata/importas.go
Expand Up @@ -6,10 +6,13 @@ import (
wrong_alias "fmt" // ERROR `import "fmt" imported as "wrong_alias" but must be "fff" according to config`
"os"
wrong_alias_again "os" // ERROR `import "os" imported as "wrong_alias_again" but must be "std_os" according to config`

wrong "github.com/pkg/errors" // ERROR `import "github.com/pkg/errors" imported as "wrong" but must be "pkgerr" according to config`
)

func ImportAsWrongAlias() {
wrong_alias.Println("foo")
wrong_alias_again.Stdout.WriteString("bar")
os.Stdout.WriteString("test")
_ = wrong.New("baz")
}
3 changes: 3 additions & 0 deletions test/testdata/importas_strict.go
Expand Up @@ -6,10 +6,13 @@ import (
wrong_alias "fmt" // ERROR `import "fmt" imported as "wrong_alias" but must be "fff" according to config`
"os" // ERROR `import "os" imported without alias but must be with alias "std_os" according to config`
wrong_alias_again "os" // ERROR `import "os" imported as "wrong_alias_again" but must be "std_os" according to config`

wrong "github.com/pkg/errors" // ERROR `import "github.com/pkg/errors" imported as "wrong" but must be "pkgerr" according to config`
)

func ImportAsStrictWrongAlias() {
wrong_alias.Println("foo")
wrong_alias_again.Stdout.WriteString("bar")
os.Stdout.WriteString("test")
_ = wrong.New("baz")
}

0 comments on commit 49babc0

Please sign in to comment.