From 80add7a8773eb90028ecef06df4eb366666d089b Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 8 Mar 2025 19:29:14 +0100 Subject: [PATCH 1/2] fix: formatters can't be enabled/disabled as linters --- .golangci.yml | 8 ++++- internal/go/cache/cache.go | 3 +- pkg/config/linters.go | 31 +++++++++++++++++++ pkg/config/loader.go | 8 +++-- pkg/goformatters/gofumpt/gofumpt.go | 5 --- pkg/golinters/gci/testdata/fix/in/gci.go | 1 - pkg/golinters/gci/testdata/fix/out/gci.go | 1 - pkg/golinters/gci/testdata/gci.go | 1 - pkg/golinters/gci/testdata/gci_cgo.go | 1 - pkg/golinters/gci/testdata/gci_go124.go | 2 +- pkg/golinters/gci/testdata/gci_go124.yml | 5 +++ pkg/golinters/gofmt/testdata/fix/in/gofmt.go | 2 +- .../testdata/fix/in/gofmt_rewrite_rules.go | 1 - pkg/golinters/gofmt/testdata/fix/out/gofmt.go | 2 +- .../testdata/fix/out/gofmt_rewrite_rules.go | 1 - pkg/golinters/gofmt/testdata/gofmt.go | 2 +- pkg/golinters/gofmt/testdata/gofmt.yml | 5 +++ pkg/golinters/gofmt/testdata/gofmt_cgo.go | 2 +- .../gofmt/testdata/gofmt_no_simplify.go | 1 - .../gofmt/testdata/gofmt_rewrite_rules.go | 1 - .../testdata/gofmt_too_many_empty_lines.go | 2 +- .../gofumpt/testdata/fix/in/gofumpt.go | 1 - .../gofumpt/testdata/fix/in/gofumpt_cgo.go | 1 - .../gofumpt/testdata/fix/out/gofumpt.go | 1 - .../gofumpt/testdata/fix/out/gofumpt_cgo.go | 1 - pkg/golinters/gofumpt/testdata/gofumpt.go | 4 +-- pkg/golinters/gofumpt/testdata/gofumpt.yml | 5 +++ pkg/golinters/gofumpt/testdata/gofumpt_cgo.go | 2 +- .../testdata/gofumpt_too_many_empty_lines.go | 2 +- .../gofumpt/testdata/gofumpt_with_extra.go | 1 - .../goimports/testdata/fix/in/goimports.go | 2 +- .../testdata/fix/in/goimports_cgo.go | 2 +- .../goimports/testdata/fix/out/goimports.go | 2 +- .../testdata/fix/out/goimports_cgo.go | 2 +- pkg/golinters/goimports/testdata/goimports.go | 2 +- .../goimports/testdata/goimports.yml | 5 +++ .../goimports/testdata/goimports_cgo.go | 2 +- .../goimports/testdata/goimports_local.go | 1 - .../golines/testdata/fix/in/golines.go | 2 +- .../golines/testdata/fix/out/golines.go | 2 +- pkg/golinters/golines/testdata/golines.go | 2 +- pkg/golinters/golines/testdata/golines.yml | 5 +++ pkg/lint/lintersdb/manager.go | 5 +++ test/enabled_linters_test.go | 8 ++--- test/run_test.go | 24 -------------- test/testdata/fix/in/multiple-issues-fix.go | 2 +- test/testdata/fix/out/multiple-issues-fix.go | 2 +- 47 files changed, 101 insertions(+), 72 deletions(-) create mode 100644 pkg/golinters/gci/testdata/gci_go124.yml create mode 100644 pkg/golinters/gofmt/testdata/gofmt.yml create mode 100644 pkg/golinters/gofumpt/testdata/gofumpt.yml create mode 100644 pkg/golinters/goimports/testdata/goimports.yml create mode 100644 pkg/golinters/golines/testdata/golines.yml diff --git a/.golangci.yml b/.golangci.yml index 97b445c62781..a01799a1cd3f 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -199,4 +199,10 @@ formatters: goimports: local-prefixes: - github.com/golangci/golangci-lint - + exclusions: + paths: + - test/testdata_etc # test files + - internal/go # extracted from Go code + - internal/x # extracted from x/tools code + - pkg/goformatters/gci/internal # extracted from gci code + - pkg/goanalysis/runner_checker.go # extracted from x/tools code diff --git a/internal/go/cache/cache.go b/internal/go/cache/cache.go index 85899ebc92af..3c3adf904c82 100644 --- a/internal/go/cache/cache.go +++ b/internal/go/cache/cache.go @@ -22,9 +22,10 @@ import ( "strings" "time" + "github.com/rogpeppe/go-internal/lockedfile" + "github.com/golangci/golangci-lint/internal/go/mmap" "github.com/golangci/golangci-lint/internal/go/robustio" - "github.com/rogpeppe/go-internal/lockedfile" ) // An ActionID is a cache action key, the hash of a complete description of a diff --git a/pkg/config/linters.go b/pkg/config/linters.go index 0e159e981e8e..3f894176b296 100644 --- a/pkg/config/linters.go +++ b/pkg/config/linters.go @@ -1,5 +1,10 @@ package config +import ( + "fmt" + "slices" +) + const ( GroupStandard = "standard" GroupAll = "all" @@ -21,6 +26,8 @@ type Linters struct { func (l *Linters) Validate() error { validators := []func() error{ l.Exclusions.Validate, + l.validateNoFormattersEnabled, + l.validateNoFormattersDisabled, } for _, v := range validators { @@ -31,3 +38,27 @@ func (l *Linters) Validate() error { return nil } + +func (l *Linters) validateNoFormattersEnabled() error { + for _, n := range l.Enable { + if slices.Contains(getAllFormatterNames(), n) { + return fmt.Errorf("%s is a formatter", n) + } + } + + return nil +} + +func (l *Linters) validateNoFormattersDisabled() error { + for _, n := range l.Enable { + if slices.Contains(getAllFormatterNames(), n) { + return fmt.Errorf("%s is a formatter", n) + } + } + + return nil +} + +func getAllFormatterNames() []string { + return []string{"gci", "gofmt", "gofumpt", "goimports"} +} diff --git a/pkg/config/loader.go b/pkg/config/loader.go index be2549802be1..90f0fbba840d 100644 --- a/pkg/config/loader.go +++ b/pkg/config/loader.go @@ -167,9 +167,13 @@ func (l *Loader) handleEnableOnlyOption() error { if len(only) > 0 { l.cfg.Linters = Linters{ - Enable: only, - Default: GroupNone, + Default: GroupNone, + Enable: only, + Settings: l.cfg.Linters.Settings, + Exclusions: l.cfg.Linters.Exclusions, } + + l.cfg.Formatters = Formatters{} } return nil diff --git a/pkg/goformatters/gofumpt/gofumpt.go b/pkg/goformatters/gofumpt/gofumpt.go index cfd7645e4526..37548f948a4c 100644 --- a/pkg/goformatters/gofumpt/gofumpt.go +++ b/pkg/goformatters/gofumpt/gofumpt.go @@ -37,10 +37,5 @@ func (f *Formatter) Format(_ string, src []byte) ([]byte, error) { } func getLangVersion(v string) string { - if v == "" { - // TODO: defaults to "1.15", in the future (v2) must be removed. - return "go1.15" - } - return "go" + strings.TrimPrefix(v, "go") } diff --git a/pkg/golinters/gci/testdata/fix/in/gci.go b/pkg/golinters/gci/testdata/fix/in/gci.go index 4e40da136c7f..fe8dd32389b3 100644 --- a/pkg/golinters/gci/testdata/fix/in/gci.go +++ b/pkg/golinters/gci/testdata/fix/in/gci.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egci //golangcitest:config_path testdata/gci.yml //golangcitest:expected_exitcode 0 package gci diff --git a/pkg/golinters/gci/testdata/fix/out/gci.go b/pkg/golinters/gci/testdata/fix/out/gci.go index a45e13bc1193..9a06317edc8f 100644 --- a/pkg/golinters/gci/testdata/fix/out/gci.go +++ b/pkg/golinters/gci/testdata/fix/out/gci.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egci //golangcitest:config_path testdata/gci.yml //golangcitest:expected_exitcode 0 package gci diff --git a/pkg/golinters/gci/testdata/gci.go b/pkg/golinters/gci/testdata/gci.go index ad0fc8ee9366..8f8b8a1190aa 100644 --- a/pkg/golinters/gci/testdata/gci.go +++ b/pkg/golinters/gci/testdata/gci.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egci //golangcitest:config_path testdata/gci.yml package testdata diff --git a/pkg/golinters/gci/testdata/gci_cgo.go b/pkg/golinters/gci/testdata/gci_cgo.go index 17997222958d..5cc0115bdd9c 100644 --- a/pkg/golinters/gci/testdata/gci_cgo.go +++ b/pkg/golinters/gci/testdata/gci_cgo.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egci //golangcitest:config_path testdata/gci.yml package testdata diff --git a/pkg/golinters/gci/testdata/gci_go124.go b/pkg/golinters/gci/testdata/gci_go124.go index f38c5bd4dab4..673e299ef9df 100644 --- a/pkg/golinters/gci/testdata/gci_go124.go +++ b/pkg/golinters/gci/testdata/gci_go124.go @@ -1,6 +1,6 @@ //go:build go1.24 -//golangcitest:args -Egci +//golangcitest:config_path testdata/gci_go124.yml //golangcitest:expected_exitcode 0 package testdata diff --git a/pkg/golinters/gci/testdata/gci_go124.yml b/pkg/golinters/gci/testdata/gci_go124.yml new file mode 100644 index 000000000000..91cc0e126c46 --- /dev/null +++ b/pkg/golinters/gci/testdata/gci_go124.yml @@ -0,0 +1,5 @@ +version: "2" + +formatters: + enable: + - gci diff --git a/pkg/golinters/gofmt/testdata/fix/in/gofmt.go b/pkg/golinters/gofmt/testdata/fix/in/gofmt.go index 7b71332b0e25..dfeb197c1a5c 100644 --- a/pkg/golinters/gofmt/testdata/fix/in/gofmt.go +++ b/pkg/golinters/gofmt/testdata/fix/in/gofmt.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofmt +//golangcitest:config_path testdata/gofmt.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofmt/testdata/fix/in/gofmt_rewrite_rules.go b/pkg/golinters/gofmt/testdata/fix/in/gofmt_rewrite_rules.go index 10225950b6be..1e9aa7c9c0f8 100644 --- a/pkg/golinters/gofmt/testdata/fix/in/gofmt_rewrite_rules.go +++ b/pkg/golinters/gofmt/testdata/fix/in/gofmt_rewrite_rules.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofmt //golangcitest:config_path testdata/gofmt_rewrite_rules.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofmt/testdata/fix/out/gofmt.go b/pkg/golinters/gofmt/testdata/fix/out/gofmt.go index 967f35ac0fe3..7668b4aa4011 100644 --- a/pkg/golinters/gofmt/testdata/fix/out/gofmt.go +++ b/pkg/golinters/gofmt/testdata/fix/out/gofmt.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofmt +//golangcitest:config_path testdata/gofmt.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofmt/testdata/fix/out/gofmt_rewrite_rules.go b/pkg/golinters/gofmt/testdata/fix/out/gofmt_rewrite_rules.go index 2a7e5902ebae..18a0c19dee48 100644 --- a/pkg/golinters/gofmt/testdata/fix/out/gofmt_rewrite_rules.go +++ b/pkg/golinters/gofmt/testdata/fix/out/gofmt_rewrite_rules.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofmt //golangcitest:config_path testdata/gofmt_rewrite_rules.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofmt/testdata/gofmt.go b/pkg/golinters/gofmt/testdata/gofmt.go index 51caf7998424..3ab628770678 100644 --- a/pkg/golinters/gofmt/testdata/gofmt.go +++ b/pkg/golinters/gofmt/testdata/gofmt.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofmt +//golangcitest:config_path testdata/gofmt.yml package testdata import "fmt" diff --git a/pkg/golinters/gofmt/testdata/gofmt.yml b/pkg/golinters/gofmt/testdata/gofmt.yml new file mode 100644 index 000000000000..366252de093b --- /dev/null +++ b/pkg/golinters/gofmt/testdata/gofmt.yml @@ -0,0 +1,5 @@ +version: "2" + +formatters: + enable: + - gofmt diff --git a/pkg/golinters/gofmt/testdata/gofmt_cgo.go b/pkg/golinters/gofmt/testdata/gofmt_cgo.go index fc623634d0bb..6ea7bffeaab3 100644 --- a/pkg/golinters/gofmt/testdata/gofmt_cgo.go +++ b/pkg/golinters/gofmt/testdata/gofmt_cgo.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofmt +//golangcitest:config_path testdata/gofmt.yml package testdata /* diff --git a/pkg/golinters/gofmt/testdata/gofmt_no_simplify.go b/pkg/golinters/gofmt/testdata/gofmt_no_simplify.go index 3c3fb0a7a6e5..8b36af1e2af0 100644 --- a/pkg/golinters/gofmt/testdata/gofmt_no_simplify.go +++ b/pkg/golinters/gofmt/testdata/gofmt_no_simplify.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofmt //golangcitest:config_path testdata/gofmt_no_simplify.yml package testdata diff --git a/pkg/golinters/gofmt/testdata/gofmt_rewrite_rules.go b/pkg/golinters/gofmt/testdata/gofmt_rewrite_rules.go index ae802398471d..61369b16aaa3 100644 --- a/pkg/golinters/gofmt/testdata/gofmt_rewrite_rules.go +++ b/pkg/golinters/gofmt/testdata/gofmt_rewrite_rules.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofmt //golangcitest:config_path testdata/gofmt_rewrite_rules.yml package testdata diff --git a/pkg/golinters/gofmt/testdata/gofmt_too_many_empty_lines.go b/pkg/golinters/gofmt/testdata/gofmt_too_many_empty_lines.go index 0d37ce84a44d..86e0dfcb3c0d 100644 --- a/pkg/golinters/gofmt/testdata/gofmt_too_many_empty_lines.go +++ b/pkg/golinters/gofmt/testdata/gofmt_too_many_empty_lines.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofmt +//golangcitest:config_path testdata/gofmt.yml package testdata import "fmt" diff --git a/pkg/golinters/gofumpt/testdata/fix/in/gofumpt.go b/pkg/golinters/gofumpt/testdata/fix/in/gofumpt.go index b9abc2a9ffdf..4d850b3ca150 100644 --- a/pkg/golinters/gofumpt/testdata/fix/in/gofumpt.go +++ b/pkg/golinters/gofumpt/testdata/fix/in/gofumpt.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofumpt //golangcitest:config_path testdata/gofumpt-fix.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofumpt/testdata/fix/in/gofumpt_cgo.go b/pkg/golinters/gofumpt/testdata/fix/in/gofumpt_cgo.go index a5f3cedb7108..ce48ce084129 100644 --- a/pkg/golinters/gofumpt/testdata/fix/in/gofumpt_cgo.go +++ b/pkg/golinters/gofumpt/testdata/fix/in/gofumpt_cgo.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofumpt //golangcitest:config_path testdata/gofumpt-fix.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofumpt/testdata/fix/out/gofumpt.go b/pkg/golinters/gofumpt/testdata/fix/out/gofumpt.go index 168a33a81f1a..12f6aff396a5 100644 --- a/pkg/golinters/gofumpt/testdata/fix/out/gofumpt.go +++ b/pkg/golinters/gofumpt/testdata/fix/out/gofumpt.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofumpt //golangcitest:config_path testdata/gofumpt-fix.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofumpt/testdata/fix/out/gofumpt_cgo.go b/pkg/golinters/gofumpt/testdata/fix/out/gofumpt_cgo.go index 3aab3ea62be1..abd942f5205b 100644 --- a/pkg/golinters/gofumpt/testdata/fix/out/gofumpt_cgo.go +++ b/pkg/golinters/gofumpt/testdata/fix/out/gofumpt_cgo.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofumpt //golangcitest:config_path testdata/gofumpt-fix.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/gofumpt/testdata/gofumpt.go b/pkg/golinters/gofumpt/testdata/gofumpt.go index 24dce876649e..af8316b68299 100644 --- a/pkg/golinters/gofumpt/testdata/gofumpt.go +++ b/pkg/golinters/gofumpt/testdata/gofumpt.go @@ -1,8 +1,8 @@ -//golangcitest:args -Egofumpt +//golangcitest:config_path testdata/gofumpt.yml package testdata import "fmt" func GofumptNewLine() { fmt.Println( "foo" ) // want "File is not properly formatted" -} \ No newline at end of file +} diff --git a/pkg/golinters/gofumpt/testdata/gofumpt.yml b/pkg/golinters/gofumpt/testdata/gofumpt.yml new file mode 100644 index 000000000000..25cb30334f8b --- /dev/null +++ b/pkg/golinters/gofumpt/testdata/gofumpt.yml @@ -0,0 +1,5 @@ +version: "2" + +formatters: + enable: + - gofumpt diff --git a/pkg/golinters/gofumpt/testdata/gofumpt_cgo.go b/pkg/golinters/gofumpt/testdata/gofumpt_cgo.go index 57223fd58056..d19838252903 100644 --- a/pkg/golinters/gofumpt/testdata/gofumpt_cgo.go +++ b/pkg/golinters/gofumpt/testdata/gofumpt_cgo.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofumpt +//golangcitest:config_path testdata/gofumpt.yml package testdata /* diff --git a/pkg/golinters/gofumpt/testdata/gofumpt_too_many_empty_lines.go b/pkg/golinters/gofumpt/testdata/gofumpt_too_many_empty_lines.go index 7046a59bc438..82f7adcbfde2 100644 --- a/pkg/golinters/gofumpt/testdata/gofumpt_too_many_empty_lines.go +++ b/pkg/golinters/gofumpt/testdata/gofumpt_too_many_empty_lines.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofumpt +//golangcitest:config_path testdata/gofumpt.yml package testdata import "fmt" diff --git a/pkg/golinters/gofumpt/testdata/gofumpt_with_extra.go b/pkg/golinters/gofumpt/testdata/gofumpt_with_extra.go index 3be0f5123cab..d0d10d9cd5f2 100644 --- a/pkg/golinters/gofumpt/testdata/gofumpt_with_extra.go +++ b/pkg/golinters/gofumpt/testdata/gofumpt_with_extra.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egofumpt //golangcitest:config_path testdata/gofumpt_with_extra.yml package testdata diff --git a/pkg/golinters/goimports/testdata/fix/in/goimports.go b/pkg/golinters/goimports/testdata/fix/in/goimports.go index 456583c75c87..daf45fb3f5b4 100644 --- a/pkg/golinters/goimports/testdata/fix/in/goimports.go +++ b/pkg/golinters/goimports/testdata/fix/in/goimports.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egoimports +//golangcitest:config_path testdata/goimports.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/goimports/testdata/fix/in/goimports_cgo.go b/pkg/golinters/goimports/testdata/fix/in/goimports_cgo.go index de8fa9a81856..9beb4922489d 100644 --- a/pkg/golinters/goimports/testdata/fix/in/goimports_cgo.go +++ b/pkg/golinters/goimports/testdata/fix/in/goimports_cgo.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egoimports +//golangcitest:config_path testdata/goimports.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/goimports/testdata/fix/out/goimports.go b/pkg/golinters/goimports/testdata/fix/out/goimports.go index bbde3564817b..4fb8e7c0cdd4 100644 --- a/pkg/golinters/goimports/testdata/fix/out/goimports.go +++ b/pkg/golinters/goimports/testdata/fix/out/goimports.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egoimports +//golangcitest:config_path testdata/goimports.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/goimports/testdata/fix/out/goimports_cgo.go b/pkg/golinters/goimports/testdata/fix/out/goimports_cgo.go index 693800c1b37e..a97fc3f02cd6 100644 --- a/pkg/golinters/goimports/testdata/fix/out/goimports_cgo.go +++ b/pkg/golinters/goimports/testdata/fix/out/goimports_cgo.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egoimports +//golangcitest:config_path testdata/goimports.yml //golangcitest:expected_exitcode 0 package p diff --git a/pkg/golinters/goimports/testdata/goimports.go b/pkg/golinters/goimports/testdata/goimports.go index 8bda09edbb8b..f5f3ab763582 100644 --- a/pkg/golinters/goimports/testdata/goimports.go +++ b/pkg/golinters/goimports/testdata/goimports.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egoimports +//golangcitest:config_path testdata/goimports.yml package testdata import ( diff --git a/pkg/golinters/goimports/testdata/goimports.yml b/pkg/golinters/goimports/testdata/goimports.yml new file mode 100644 index 000000000000..fa9c87a85489 --- /dev/null +++ b/pkg/golinters/goimports/testdata/goimports.yml @@ -0,0 +1,5 @@ +version: "2" + +formatters: + enable: + - goimports diff --git a/pkg/golinters/goimports/testdata/goimports_cgo.go b/pkg/golinters/goimports/testdata/goimports_cgo.go index ffbf3eb7aab2..a6254a3b8c6f 100644 --- a/pkg/golinters/goimports/testdata/goimports_cgo.go +++ b/pkg/golinters/goimports/testdata/goimports_cgo.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egoimports +//golangcitest:config_path testdata/goimports.yml package testdata /* diff --git a/pkg/golinters/goimports/testdata/goimports_local.go b/pkg/golinters/goimports/testdata/goimports_local.go index 9207fb48d4ae..a5b44bf372d6 100644 --- a/pkg/golinters/goimports/testdata/goimports_local.go +++ b/pkg/golinters/goimports/testdata/goimports_local.go @@ -1,4 +1,3 @@ -//golangcitest:args -Egoimports //golangcitest:config_path testdata/goimports_local.yml package testdata diff --git a/pkg/golinters/golines/testdata/fix/in/golines.go b/pkg/golinters/golines/testdata/fix/in/golines.go index 5f0cd93ac195..375c7b9514ee 100644 --- a/pkg/golinters/golines/testdata/fix/in/golines.go +++ b/pkg/golinters/golines/testdata/fix/in/golines.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egolines +//golangcitest:config_path testdata/golines.yml //golangcitest:expected_exitcode 0 package testdata diff --git a/pkg/golinters/golines/testdata/fix/out/golines.go b/pkg/golinters/golines/testdata/fix/out/golines.go index ada9a4ab5130..76e544972501 100644 --- a/pkg/golinters/golines/testdata/fix/out/golines.go +++ b/pkg/golinters/golines/testdata/fix/out/golines.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egolines +//golangcitest:config_path testdata/golines.yml //golangcitest:expected_exitcode 0 package testdata diff --git a/pkg/golinters/golines/testdata/golines.go b/pkg/golinters/golines/testdata/golines.go index a8656e497fae..d4870a6fd01e 100644 --- a/pkg/golinters/golines/testdata/golines.go +++ b/pkg/golinters/golines/testdata/golines.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egolines +//golangcitest:config_path testdata/golines.yml package testdata import "fmt" diff --git a/pkg/golinters/golines/testdata/golines.yml b/pkg/golinters/golines/testdata/golines.yml new file mode 100644 index 000000000000..317cb5e216c2 --- /dev/null +++ b/pkg/golinters/golines/testdata/golines.yml @@ -0,0 +1,5 @@ +version: "2" + +formatters: + enable: + - golines diff --git a/pkg/lint/lintersdb/manager.go b/pkg/lint/lintersdb/manager.go index dc4c105c3bb0..c94b2ad26772 100644 --- a/pkg/lint/lintersdb/manager.go +++ b/pkg/lint/lintersdb/manager.go @@ -11,6 +11,7 @@ import ( "github.com/golangci/golangci-lint/pkg/config" "github.com/golangci/golangci-lint/pkg/goanalysis" + "github.com/golangci/golangci-lint/pkg/goformatters" "github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/logutils" ) @@ -279,6 +280,10 @@ func linterConfigsToMap(lcs []*linter.Config) map[string]*linter.Config { continue } + if goformatters.IsFormatter(lc.Name()) { + continue + } + ret[lc.Name()] = lc } diff --git a/test/enabled_linters_test.go b/test/enabled_linters_test.go index b041e760771b..f681a61061f6 100644 --- a/test/enabled_linters_test.go +++ b/test/enabled_linters_test.go @@ -49,12 +49,12 @@ func TestEnabledLinters(t *testing.T) { enabledLinters: getEnabledByDefaultLintersExcept(t, "govet"), }, { - name: "enable gofmt in cmd and enable revive in config", - args: []string{"-Egofmt"}, + name: "enable revive in cmd and enable gofmt in config", + args: []string{"-Erevive"}, cfg: ` - linters: + formatters: enable: - - revive + - gofmt `, enabledLinters: getEnabledByDefaultLintersWith(t, "revive", "gofmt"), }, diff --git a/test/run_test.go b/test/run_test.go index b5c023b4314d..67344d9d82c0 100644 --- a/test/run_test.go +++ b/test/run_test.go @@ -156,12 +156,6 @@ func TestCgoWithIssues(t *testing.T) { dir: "cgo_with_issues", expected: "SA5009: Printf format %t has arg #1 of wrong type", }, - { - desc: "gofmt", - args: []string{"--no-config", "--default=none", "-Egofmt"}, - dir: "cgo_with_issues", - expected: "File is not properly formatted (gofmt)", - }, { desc: "revive", args: []string{"--no-config", "--default=none", "-Erevive"}, @@ -206,24 +200,6 @@ func TestLineDirective(t *testing.T) { targetPath: "linedirective", expected: "21-23 lines are duplicate of `testdata/linedirective/hello.go:25-27` (dupl)", }, - { - desc: "gofmt", - args: []string{ - "-Egofmt", - "--default=none", - }, - targetPath: "linedirective", - expected: "File is not properly formatted (gofmt)", - }, - { - desc: "goimports", - args: []string{ - "-Egoimports", - "--default=none", - }, - targetPath: "linedirective", - expected: "File is not properly formatted (goimports)", - }, { desc: "gomodguard", args: []string{ diff --git a/test/testdata/fix/in/multiple-issues-fix.go b/test/testdata/fix/in/multiple-issues-fix.go index c781bed23d1b..7941fbbed481 100644 --- a/test/testdata/fix/in/multiple-issues-fix.go +++ b/test/testdata/fix/in/multiple-issues-fix.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofumpt,misspell +//golangcitest:args -Emisspell //golangcitest:config_path testdata/configs/multiple-issues-fix.yml //golangcitest:expected_exitcode 0 package p diff --git a/test/testdata/fix/out/multiple-issues-fix.go b/test/testdata/fix/out/multiple-issues-fix.go index 41b75cd5f196..3b3cb36fa779 100644 --- a/test/testdata/fix/out/multiple-issues-fix.go +++ b/test/testdata/fix/out/multiple-issues-fix.go @@ -1,4 +1,4 @@ -//golangcitest:args -Egofumpt,misspell +//golangcitest:args -Emisspell //golangcitest:config_path testdata/configs/multiple-issues-fix.yml //golangcitest:expected_exitcode 0 package p From 6d4c06639cd05517fee2ac6508b27648fd3a6a0e Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Tue, 11 Mar 2025 13:29:50 +0100 Subject: [PATCH 2/2] review --- pkg/config/linters.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/config/linters.go b/pkg/config/linters.go index 3f894176b296..06ec251a3826 100644 --- a/pkg/config/linters.go +++ b/pkg/config/linters.go @@ -50,7 +50,7 @@ func (l *Linters) validateNoFormattersEnabled() error { } func (l *Linters) validateNoFormattersDisabled() error { - for _, n := range l.Enable { + for _, n := range l.Disable { if slices.Contains(getAllFormatterNames(), n) { return fmt.Errorf("%s is a formatter", n) }