From 43b5c05c5c26475c13c44b18932ae8202973a593 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Thu, 20 Feb 2025 15:41:21 +0100 Subject: [PATCH 1/4] chore: predeclared.ignore -> slice --- .golangci.next.reference.yml | 8 +++++--- jsonschema/golangci.next.jsonschema.json | 7 +++++-- pkg/config/linters_settings.go | 5 ++--- pkg/golinters/predeclared/predeclared.go | 4 +++- pkg/golinters/predeclared/testdata/predeclared_custom.yml | 4 +++- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.golangci.next.reference.yml b/.golangci.next.reference.yml index 2a8d145e2179..4106b73ce3fd 100644 --- a/.golangci.next.reference.yml +++ b/.golangci.next.reference.yml @@ -2356,9 +2356,11 @@ linters-settings: for-loops: true predeclared: - # Comma-separated list of predeclared identifiers to not report on. - # Default: "" - ignore: "new,int" + # List of predeclared identifiers to not report on. + # Default: [] + ignore: + - new + - int # Include method names and field names in checks. # Default: false qualified-name: true diff --git a/jsonschema/golangci.next.jsonschema.json b/jsonschema/golangci.next.jsonschema.json index 25b765c289c8..5f93a4c0e282 100644 --- a/jsonschema/golangci.next.jsonschema.json +++ b/jsonschema/golangci.next.jsonschema.json @@ -2413,8 +2413,11 @@ "additionalProperties": false, "properties": { "ignore": { - "description": "Comma-separated list of predeclared identifiers to not report on.", - "type": "string" + "description": "List of predeclared identifiers to not report on.", + "type": "array", + "items": { + "type": "string" + } }, "qualified-name": { "description": "Include method names and field names in checks.", diff --git a/pkg/config/linters_settings.go b/pkg/config/linters_settings.go index bc11207bcb66..359a62bb488c 100644 --- a/pkg/config/linters_settings.go +++ b/pkg/config/linters_settings.go @@ -128,7 +128,6 @@ var defaultLintersSettings = LintersSettings{ ForLoops: false, }, Predeclared: PredeclaredSettings{ - Ignore: "", Qualified: false, }, SlogLint: SlogLintSettings{ @@ -715,8 +714,8 @@ type PreallocSettings struct { } type PredeclaredSettings struct { - Ignore string `mapstructure:"ignore"` - Qualified bool `mapstructure:"qualified-name"` + Ignore []string `mapstructure:"ignore"` + Qualified bool `mapstructure:"qualified-name"` } type PromlinterSettings struct { diff --git a/pkg/golinters/predeclared/predeclared.go b/pkg/golinters/predeclared/predeclared.go index b8d189fd557e..61d6b1b11c93 100644 --- a/pkg/golinters/predeclared/predeclared.go +++ b/pkg/golinters/predeclared/predeclared.go @@ -1,6 +1,8 @@ package predeclared import ( + "strings" + "github.com/nishanths/predeclared/passes/predeclared" "golang.org/x/tools/go/analysis" @@ -15,7 +17,7 @@ func New(settings *config.PredeclaredSettings) *goanalysis.Linter { if settings != nil { cfg = map[string]map[string]any{ a.Name: { - predeclared.IgnoreFlag: settings.Ignore, + predeclared.IgnoreFlag: strings.Join(settings.Ignore, ","), predeclared.QualifiedFlag: settings.Qualified, }, } diff --git a/pkg/golinters/predeclared/testdata/predeclared_custom.yml b/pkg/golinters/predeclared/testdata/predeclared_custom.yml index 60510de4b473..a7d42f583fb8 100644 --- a/pkg/golinters/predeclared/testdata/predeclared_custom.yml +++ b/pkg/golinters/predeclared/testdata/predeclared_custom.yml @@ -2,5 +2,7 @@ version: "2" linters-settings: predeclared: - ignore: "real,recover" + ignore: + - real + - recover qualified-name: true From 20387401a5c9279bbf642e038764516271b51a58 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Thu, 20 Feb 2025 15:45:16 +0100 Subject: [PATCH 2/4] chore: goimports.local-prefixes -> slice --- .golangci.next.reference.yml | 5 +++-- .golangci.yml | 3 ++- jsonschema/golangci.next.jsonschema.json | 6 ++++-- pkg/config/formatters_settings.go | 2 +- pkg/goformatters/goimports/goimports.go | 4 +++- pkg/golinters/goimports/testdata/goimports_local.yml | 3 ++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.golangci.next.reference.yml b/.golangci.next.reference.yml index 4106b73ce3fd..e90789d8468b 100644 --- a/.golangci.next.reference.yml +++ b/.golangci.next.reference.yml @@ -400,8 +400,9 @@ formatters: goimports: # A comma-separated list of prefixes, which, if set, checks import paths # with the given prefixes are grouped after 3rd-party packages. - # Default: "" - local-prefixes: github.com/org/project + # Default: [] + local-prefixes: + - github.com/org/project golines: # Target maximum line length. diff --git a/.golangci.yml b/.golangci.yml index 4102ea282e88..06bab229429c 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -114,7 +114,8 @@ formatters: - pattern: 'interface{}' replacement: 'any' goimports: - local-prefixes: github.com/golangci/golangci-lint + local-prefixes: + - github.com/golangci/golangci-lint linters-settings: depguard: diff --git a/jsonschema/golangci.next.jsonschema.json b/jsonschema/golangci.next.jsonschema.json index 5f93a4c0e282..d77fb7808b0c 100644 --- a/jsonschema/golangci.next.jsonschema.json +++ b/jsonschema/golangci.next.jsonschema.json @@ -1556,8 +1556,10 @@ "properties": { "local-prefixes": { "description": "Put imports beginning with prefix after 3rd-party packages. It is a comma-separated list of prefixes.", - "type": "string", - "examples": ["github.com/org/project"] + "type": "array", + "items": { + "type": "string" + } } } }, diff --git a/pkg/config/formatters_settings.go b/pkg/config/formatters_settings.go index 51c16da660fd..40f0f1dbbdfc 100644 --- a/pkg/config/formatters_settings.go +++ b/pkg/config/formatters_settings.go @@ -51,7 +51,7 @@ type GoFumptSettings struct { } type GoImportsSettings struct { - LocalPrefixes string `mapstructure:"local-prefixes"` + LocalPrefixes []string `mapstructure:"local-prefixes"` } type GoLinesSettings struct { diff --git a/pkg/goformatters/goimports/goimports.go b/pkg/goformatters/goimports/goimports.go index fa0f1fc4f36e..b1c9dff5d10a 100644 --- a/pkg/goformatters/goimports/goimports.go +++ b/pkg/goformatters/goimports/goimports.go @@ -1,6 +1,8 @@ package goimports import ( + "strings" + "golang.org/x/tools/imports" "github.com/golangci/golangci-lint/pkg/config" @@ -12,7 +14,7 @@ type Formatter struct{} func New(settings *config.GoImportsSettings) *Formatter { if settings != nil { - imports.LocalPrefix = settings.LocalPrefixes + imports.LocalPrefix = strings.Join(settings.LocalPrefixes, ",") } return &Formatter{} diff --git a/pkg/golinters/goimports/testdata/goimports_local.yml b/pkg/golinters/goimports/testdata/goimports_local.yml index b5704a8233c0..b39cc68f879a 100644 --- a/pkg/golinters/goimports/testdata/goimports_local.yml +++ b/pkg/golinters/goimports/testdata/goimports_local.yml @@ -5,4 +5,5 @@ formatters: - goimports settings: goimports: - local-prefixes: github.com/golangci/golangci-lint + local-prefixes: + - github.com/golangci/golangci-lint From 916b21e10564b5bfe00401ef8ec2c5d7c408c56a Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Mon, 24 Feb 2025 20:35:09 +0100 Subject: [PATCH 3/4] review --- .golangci.next.reference.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.golangci.next.reference.yml b/.golangci.next.reference.yml index e90789d8468b..5de829806041 100644 --- a/.golangci.next.reference.yml +++ b/.golangci.next.reference.yml @@ -398,7 +398,7 @@ formatters: extra-rules: true goimports: - # A comma-separated list of prefixes, which, if set, checks import paths + # A list of prefixes, which, if set, checks import paths # with the given prefixes are grouped after 3rd-party packages. # Default: [] local-prefixes: From ec5c9fcb597d0230b8d6fe3dba5c178d4c06fb2b Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Mon, 24 Feb 2025 21:07:59 +0100 Subject: [PATCH 4/4] review --- jsonschema/golangci.next.jsonschema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsonschema/golangci.next.jsonschema.json b/jsonschema/golangci.next.jsonschema.json index d77fb7808b0c..4891a5514633 100644 --- a/jsonschema/golangci.next.jsonschema.json +++ b/jsonschema/golangci.next.jsonschema.json @@ -1555,7 +1555,7 @@ "additionalProperties": false, "properties": { "local-prefixes": { - "description": "Put imports beginning with prefix after 3rd-party packages. It is a comma-separated list of prefixes.", + "description": "Put imports beginning with prefix after 3rd-party packages. It is a list of prefixes.", "type": "array", "items": { "type": "string"