From b77b43ea9ad97da92cdcb20299a72d40cfda367d Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Thu, 13 Mar 2025 18:18:05 +0100 Subject: [PATCH] fix: improve staticcheck migration --- .../internal/migrate/migrate_linter_names.go | 21 +++++++++++++++++++ .../internal/migrate/migrate_linters.go | 2 +- .../testdata/yaml/linters_09.golden.yml | 1 - .../testdata/yaml/linters_13_a.golden.yml | 1 + .../migrate/testdata/yaml/linters_13_a.yml | 13 ++++++++++++ .../testdata/yaml/linters_13_b.golden.yml | 9 ++++++++ .../migrate/testdata/yaml/linters_13_b.yml | 12 +++++++++++ .../testdata/yaml/linters_13_c.golden.yml | 1 + .../migrate/testdata/yaml/linters_13_c.yml | 11 ++++++++++ .../testdata/yaml/linters_13_d.golden.yml | 4 ++++ .../migrate/testdata/yaml/linters_13_d.yml | 13 ++++++++++++ 11 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_a.golden.yml create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_a.yml create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_b.golden.yml create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_b.yml create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_c.golden.yml create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_c.yml create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_d.golden.yml create mode 100644 pkg/commands/internal/migrate/testdata/yaml/linters_13_d.yml diff --git a/pkg/commands/internal/migrate/migrate_linter_names.go b/pkg/commands/internal/migrate/migrate_linter_names.go index 495f73f5ef6d..da003e9af77d 100644 --- a/pkg/commands/internal/migrate/migrate_linter_names.go +++ b/pkg/commands/internal/migrate/migrate_linter_names.go @@ -885,6 +885,27 @@ func convertStaticcheckLinterNames(names []string) []string { return Unique(results) } +func convertDisabledStaticcheckLinterNames(names []string) []string { + removeStaticcheck := slices.Contains(names, "staticcheck") && slices.Contains(names, "stylecheck") && slices.Contains(names, "gosimple") + + var results []string + + for _, name := range names { + if removeStaticcheck && slices.Contains([]string{"stylecheck", "gosimple", "staticcheck"}, name) { + results = append(results, "staticcheck") + continue + } + + if slices.Contains([]string{"stylecheck", "gosimple"}, name) { + continue + } + + results = append(results, name) + } + + return Unique(results) +} + func onlyLinterNames(names []string) []string { formatters := []string{"gci", "gofmt", "gofumpt", "goimports"} diff --git a/pkg/commands/internal/migrate/migrate_linters.go b/pkg/commands/internal/migrate/migrate_linters.go index 0e16c900abf8..c070119b6ab5 100644 --- a/pkg/commands/internal/migrate/migrate_linters.go +++ b/pkg/commands/internal/migrate/migrate_linters.go @@ -12,7 +12,7 @@ func toLinters(old *versionone.Config) versiontwo.Linters { return versiontwo.Linters{ Default: getDefaultName(old.Linters), Enable: onlyLinterNames(convertStaticcheckLinterNames(enable)), - Disable: onlyLinterNames(convertStaticcheckLinterNames(disable)), + Disable: onlyLinterNames(convertDisabledStaticcheckLinterNames(disable)), FastOnly: nil, Settings: toLinterSettings(old.LintersSettings), Exclusions: toExclusions(old), diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_09.golden.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_09.golden.yml index 7154856c8057..50b24cb77c5b 100644 --- a/pkg/commands/internal/migrate/testdata/yaml/linters_09.golden.yml +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_09.golden.yml @@ -43,7 +43,6 @@ linters: - mnd - mycustomlinter3 - mycustomlinter4 - - staticcheck formatters: enable: - gofmt diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_a.golden.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_a.golden.yml new file mode 100644 index 000000000000..26b4afdb1e3a --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_a.golden.yml @@ -0,0 +1 @@ +version: "2" diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_a.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_a.yml new file mode 100644 index 000000000000..2af76ffc4179 --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_a.yml @@ -0,0 +1,13 @@ +issues: + # Only to not generate unrelated elements inside golden. + exclude-use-default: false + # Only to not generate unrelated elements inside golden. + exclude-generated: strict + # Only to not generate unrelated elements inside golden. + exclude-dirs-use-default: false + +linters: + enable: + - staticcheck + disable: + - stylecheck diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_b.golden.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_b.golden.yml new file mode 100644 index 000000000000..9052e9382809 --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_b.golden.yml @@ -0,0 +1,9 @@ +version: "2" +linters: + default: all +formatters: + enable: + - gci + - gofmt + - gofumpt + - goimports diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_b.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_b.yml new file mode 100644 index 000000000000..beed72024ca0 --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_b.yml @@ -0,0 +1,12 @@ +issues: + # Only to not generate unrelated elements inside golden. + exclude-use-default: false + # Only to not generate unrelated elements inside golden. + exclude-generated: strict + # Only to not generate unrelated elements inside golden. + exclude-dirs-use-default: false + +linters: + enable-all: true + disable: + - gosimple diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_c.golden.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_c.golden.yml new file mode 100644 index 000000000000..26b4afdb1e3a --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_c.golden.yml @@ -0,0 +1 @@ +version: "2" diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_c.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_c.yml new file mode 100644 index 000000000000..d00d99e3e887 --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_c.yml @@ -0,0 +1,11 @@ +issues: + # Only to not generate unrelated elements inside golden. + exclude-use-default: false + # Only to not generate unrelated elements inside golden. + exclude-generated: strict + # Only to not generate unrelated elements inside golden. + exclude-dirs-use-default: false + +linters: + disable: + - stylecheck diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_d.golden.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_d.golden.yml new file mode 100644 index 000000000000..ec082f1d7e33 --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_d.golden.yml @@ -0,0 +1,4 @@ +version: "2" +linters: + disable: + - staticcheck diff --git a/pkg/commands/internal/migrate/testdata/yaml/linters_13_d.yml b/pkg/commands/internal/migrate/testdata/yaml/linters_13_d.yml new file mode 100644 index 000000000000..209a1863637b --- /dev/null +++ b/pkg/commands/internal/migrate/testdata/yaml/linters_13_d.yml @@ -0,0 +1,13 @@ +issues: + # Only to not generate unrelated elements inside golden. + exclude-use-default: false + # Only to not generate unrelated elements inside golden. + exclude-generated: strict + # Only to not generate unrelated elements inside golden. + exclude-dirs-use-default: false + +linters: + disable: + - staticcheck + - stylecheck + - gosimple