From 24e40523aabc9628f697467b4ce1c5028d264874 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic <ldez@users.noreply.github.com> Date: Mon, 24 Mar 2025 16:42:46 +0100 Subject: [PATCH 1/5] fix: move version validation --- pkg/commands/run.go | 4 ---- pkg/config/loader.go | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/commands/run.go b/pkg/commands/run.go index 6ae7f3bf71bd..7faa00161fdb 100644 --- a/pkg/commands/run.go +++ b/pkg/commands/run.go @@ -185,10 +185,6 @@ func (c *runCommand) persistentPostRunE(_ *cobra.Command, _ []string) error { } func (c *runCommand) preRunE(_ *cobra.Command, args []string) error { - if c.cfg.GetConfigDir() != "" && c.cfg.Version != "2" { - return fmt.Errorf("invalid version of the configuration: %q", c.cfg.Version) - } - dbManager, err := lintersdb.NewManager(c.log.Child(logutils.DebugKeyLintersDB), c.cfg, lintersdb.NewLinterBuilder(), lintersdb.NewPluginModuleBuilder(c.log), lintersdb.NewPluginGoBuilder(c.log)) if err != nil { diff --git a/pkg/config/loader.go b/pkg/config/loader.go index f3c87af07ebc..d771a7cc60a2 100644 --- a/pkg/config/loader.go +++ b/pkg/config/loader.go @@ -60,6 +60,10 @@ func (l *Loader) Load(opts LoadOptions) error { l.cfg.Linters.Exclusions.Generated = GeneratedModeStrict } + if l.cfg.GetConfigDir() != "" && l.cfg.Version != "2" { + return fmt.Errorf("unsupported version of the configuration: %q (require configuration v2)", l.cfg.Version) + } + if !l.cfg.InternalCmdTest { for _, n := range slices.Concat(l.cfg.Linters.Enable, l.cfg.Linters.Disable) { if n == "typecheck" { From ea5908d619ca9d15332d3a6379fcb0b9cdf4a581 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic <ldez@users.noreply.github.com> Date: Mon, 24 Mar 2025 16:49:30 +0100 Subject: [PATCH 2/5] fix: complexity --- pkg/config/loader.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/config/loader.go b/pkg/config/loader.go index d771a7cc60a2..911aca4a5f92 100644 --- a/pkg/config/loader.go +++ b/pkg/config/loader.go @@ -60,8 +60,9 @@ func (l *Loader) Load(opts LoadOptions) error { l.cfg.Linters.Exclusions.Generated = GeneratedModeStrict } - if l.cfg.GetConfigDir() != "" && l.cfg.Version != "2" { - return fmt.Errorf("unsupported version of the configuration: %q (require configuration v2)", l.cfg.Version) + err = l.checkConfigurationVersion() + if err != nil { + return err } if !l.cfg.InternalCmdTest { @@ -131,6 +132,14 @@ func (l *Loader) appendStringSlice(name string, current *[]string) { } } +func (l *Loader) checkConfigurationVersion() error { + if l.cfg.GetConfigDir() != "" && l.cfg.Version != "2" { + return fmt.Errorf("unsupported version of the configuration: %q (require configuration v2)", l.cfg.Version) + } + + return nil +} + func (l *Loader) handleGoVersion() { if l.cfg.Run.Go == "" { l.cfg.Run.Go = detectGoVersion(context.Background()) From 5204feedc795c09d8fb992a2adf98f5ac7180321 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez <ldez@users.noreply.github.com> Date: Mon, 24 Mar 2025 16:54:19 +0100 Subject: [PATCH 3/5] review Co-authored-by: Yuri Shkuro <yurishkuro@users.noreply.github.com> --- pkg/config/loader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/config/loader.go b/pkg/config/loader.go index 911aca4a5f92..6355c4d9f73b 100644 --- a/pkg/config/loader.go +++ b/pkg/config/loader.go @@ -134,7 +134,7 @@ func (l *Loader) appendStringSlice(name string, current *[]string) { func (l *Loader) checkConfigurationVersion() error { if l.cfg.GetConfigDir() != "" && l.cfg.Version != "2" { - return fmt.Errorf("unsupported version of the configuration: %q (require configuration v2)", l.cfg.Version) + return fmt.Errorf("unsupported version of the configuration: %q (require configuration v2). See https://golangci-lint.run/product/migration-guide for migration instructions.", l.cfg.Version) } return nil From efb27638f777555e3597b7800ebf20eb52de2559 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic <ldez@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:06:25 +0100 Subject: [PATCH 4/5] fix: tests --- test/enabled_linters_test.go | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/test/enabled_linters_test.go b/test/enabled_linters_test.go index 70ad679b400b..908b8f282490 100644 --- a/test/enabled_linters_test.go +++ b/test/enabled_linters_test.go @@ -28,18 +28,20 @@ func TestEnabledLinters(t *testing.T) { { name: "disable govet in config", cfg: ` - linters: - disable: - - govet +version: "2" +linters: + disable: + - govet `, enabledLinters: getEnabledByDefaultLintersExcept(t, "govet"), }, { name: "enable revive in config", cfg: ` - linters: - enable: - - revive +version: "2" +linters: + enable: + - revive `, enabledLinters: getEnabledByDefaultLintersWith(t, "revive"), }, @@ -52,17 +54,19 @@ func TestEnabledLinters(t *testing.T) { name: "enable revive in cmd and enable gofmt in config", args: []string{"-Erevive"}, cfg: ` - formatters: - enable: - - gofmt +version: "2" +formatters: + enable: + - gofmt `, enabledLinters: getEnabledByDefaultLintersWith(t, "revive", "gofmt"), }, { name: "fast option in config", cfg: ` - linters: - default: fast +version: "2" +linters: + default: fast `, enabledLinters: getAllLintersFromGroupFast(t), }, @@ -74,8 +78,9 @@ func TestEnabledLinters(t *testing.T) { { name: "fast option in command-line has higher priority to enable", cfg: ` - linters: - default: none +version: "2" +linters: + default: none `, args: []string{"--default=fast"}, enabledLinters: getAllLintersFromGroupFast(t), From 6594b50fd63c40b485acc131659c8232479e408b Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic <ldez@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:09:57 +0100 Subject: [PATCH 5/5] fix: lll --- pkg/config/loader.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/config/loader.go b/pkg/config/loader.go index 6355c4d9f73b..deace8ff0b17 100644 --- a/pkg/config/loader.go +++ b/pkg/config/loader.go @@ -134,7 +134,8 @@ func (l *Loader) appendStringSlice(name string, current *[]string) { func (l *Loader) checkConfigurationVersion() error { if l.cfg.GetConfigDir() != "" && l.cfg.Version != "2" { - return fmt.Errorf("unsupported version of the configuration: %q (require configuration v2). See https://golangci-lint.run/product/migration-guide for migration instructions.", l.cfg.Version) + return fmt.Errorf("unsupported version of the configuration: %q "+ + "See https://golangci-lint.run/product/migration-guide for migration instructions", l.cfg.Version) } return nil