From 99a3a12e8b9e0de19a665f7d94fa24dd601acb79 Mon Sep 17 00:00:00 2001 From: Trim21 Date: Wed, 31 Aug 2022 19:29:34 +0800 Subject: [PATCH] gofmt: support rewrite --- go.sum | 2 -- pkg/commands/run.go | 3 +++ pkg/config/linters_settings.go | 1 + pkg/golinters/gofmt.go | 2 +- pkg/golinters/gofmt_common.go | 3 +++ 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/go.sum b/go.sum index 30ea18bb9312..7217ae9db8a2 100644 --- a/go.sum +++ b/go.sum @@ -255,8 +255,6 @@ github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9 github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= diff --git a/pkg/commands/run.go b/pkg/commands/run.go index 9f9d5ea47bb1..5ff384b5f06b 100644 --- a/pkg/commands/run.go +++ b/pkg/commands/run.go @@ -151,6 +151,9 @@ func initFlagSet(fs *pflag.FlagSet, cfg *config.Config, m *lintersdb.Manager, is fs.BoolVar(&lsc.Gofmt.Simplify, "gofmt.simplify", true, "Gofmt: simplify code") hideFlag("gofmt.simplify") + fs.StringVar(&lsc.Gofmt.Rewrite, "gofmt.rewrite", "", "Gofmt: rewrite code") + hideFlag("gofmt.rewrite") + fs.IntVar(&lsc.Gocyclo.MinComplexity, "gocyclo.min-complexity", 30, "Minimal complexity of function to report it") hideFlag("gocyclo.min-complexity") diff --git a/pkg/config/linters_settings.go b/pkg/config/linters_settings.go index 1e923409a05d..4e8635c48934 100644 --- a/pkg/config/linters_settings.go +++ b/pkg/config/linters_settings.go @@ -336,6 +336,7 @@ type GodoxSettings struct { type GoFmtSettings struct { Simplify bool + Rewrite string } type GofumptSettings struct { diff --git a/pkg/golinters/gofmt.go b/pkg/golinters/gofmt.go index e8c02411c389..462cc1b6a5f8 100644 --- a/pkg/golinters/gofmt.go +++ b/pkg/golinters/gofmt.go @@ -58,7 +58,7 @@ func runGofmt(lintCtx *linter.Context, pass *analysis.Pass, settings *config.GoF var issues []goanalysis.Issue for _, f := range fileNames { - diff, err := gofmtAPI.Run(f, settings.Simplify) + diff, err := gofmtAPI.RunRewrite(f, settings.Simplify, settings.Rewrite) if err != nil { // TODO: skip return nil, err } diff --git a/pkg/golinters/gofmt_common.go b/pkg/golinters/gofmt_common.go index e92417429fe2..d73555c27387 100644 --- a/pkg/golinters/gofmt_common.go +++ b/pkg/golinters/gofmt_common.go @@ -223,6 +223,9 @@ func getErrorTextForLinter(settings *config.LintersSettings, linterName string) if settings.Gofmt.Simplify { text += " with `-s`" } + if settings.Gofmt.Rewrite != "" { + text += fmt.Sprintf(" `-r '%s'`", settings.Gofmt.Rewrite) + } case goimportsName: text = "File is not `goimports`-ed" if settings.Goimports.LocalPrefixes != "" {