From c831ff8f288ff1d34d2d63420c725fbe97bb9979 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 00:59:30 +0200 Subject: [PATCH 1/9] dev: fix name of a test file --- pkg/goanalysis/{linter_test.go => errors_test.go} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename pkg/goanalysis/{linter_test.go => errors_test.go} (95%) diff --git a/pkg/goanalysis/linter_test.go b/pkg/goanalysis/errors_test.go similarity index 95% rename from pkg/goanalysis/linter_test.go rename to pkg/goanalysis/errors_test.go index 44ded60043c0..c33669e5bef6 100644 --- a/pkg/goanalysis/linter_test.go +++ b/pkg/goanalysis/errors_test.go @@ -8,7 +8,7 @@ import ( "golang.org/x/tools/go/packages" ) -func TestParseError(t *testing.T) { +func Test_parseError(t *testing.T) { cases := []struct { in, out string good bool From aee90d97853df27c0b048716868a1d692071f140 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:23:17 +0200 Subject: [PATCH 2/9] chore: move package --- pkg/goanalysis/errors.go | 2 +- pkg/{ => goanalysis}/packages/errors.go | 0 pkg/{ => goanalysis}/packages/util.go | 0 pkg/{ => goanalysis}/packages/util_test.go | 0 4 files changed, 1 insertion(+), 1 deletion(-) rename pkg/{ => goanalysis}/packages/errors.go (100%) rename pkg/{ => goanalysis}/packages/util.go (100%) rename pkg/{ => goanalysis}/packages/util_test.go (100%) diff --git a/pkg/goanalysis/errors.go b/pkg/goanalysis/errors.go index f59e02cc6408..af4d4eca2b49 100644 --- a/pkg/goanalysis/errors.go +++ b/pkg/goanalysis/errors.go @@ -6,8 +6,8 @@ import ( "golang.org/x/tools/go/packages" + libpackages "github.com/golangci/golangci-lint/pkg/goanalysis/packages" "github.com/golangci/golangci-lint/pkg/lint/linter" - libpackages "github.com/golangci/golangci-lint/pkg/packages" "github.com/golangci/golangci-lint/pkg/result" ) diff --git a/pkg/packages/errors.go b/pkg/goanalysis/packages/errors.go similarity index 100% rename from pkg/packages/errors.go rename to pkg/goanalysis/packages/errors.go diff --git a/pkg/packages/util.go b/pkg/goanalysis/packages/util.go similarity index 100% rename from pkg/packages/util.go rename to pkg/goanalysis/packages/util.go diff --git a/pkg/packages/util_test.go b/pkg/goanalysis/packages/util_test.go similarity index 100% rename from pkg/packages/util_test.go rename to pkg/goanalysis/packages/util_test.go From c86ee3922cc7e4f7c896cd278f9ac098e28b7943 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:24:25 +0200 Subject: [PATCH 3/9] chore: rename package --- pkg/goanalysis/errors.go | 6 +++--- pkg/goanalysis/{packages => pkgerrors}/errors.go | 2 +- pkg/goanalysis/{packages => pkgerrors}/util.go | 2 +- pkg/goanalysis/{packages => pkgerrors}/util_test.go | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename pkg/goanalysis/{packages => pkgerrors}/errors.go (97%) rename pkg/goanalysis/{packages => pkgerrors}/util.go (99%) rename pkg/goanalysis/{packages => pkgerrors}/util_test.go (99%) diff --git a/pkg/goanalysis/errors.go b/pkg/goanalysis/errors.go index af4d4eca2b49..a60d34a73f30 100644 --- a/pkg/goanalysis/errors.go +++ b/pkg/goanalysis/errors.go @@ -6,7 +6,7 @@ import ( "golang.org/x/tools/go/packages" - libpackages "github.com/golangci/golangci-lint/pkg/goanalysis/packages" + "github.com/golangci/golangci-lint/pkg/goanalysis/pkgerrors" "github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/result" ) @@ -36,7 +36,7 @@ func buildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu continue } - for _, err := range libpackages.ExtractErrors(ill.Pkg) { + for _, err := range pkgerrors.ExtractErrors(ill.Pkg) { i, perr := parseError(err) if perr != nil { // failed to parse if uniqReportedIssues[err.Msg] { @@ -59,7 +59,7 @@ func buildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu } func parseError(srcErr packages.Error) (*result.Issue, error) { - pos, err := libpackages.ParseErrorPosition(srcErr.Pos) + pos, err := pkgerrors.ParseErrorPosition(srcErr.Pos) if err != nil { return nil, err } diff --git a/pkg/goanalysis/packages/errors.go b/pkg/goanalysis/pkgerrors/errors.go similarity index 97% rename from pkg/goanalysis/packages/errors.go rename to pkg/goanalysis/pkgerrors/errors.go index ff37651affcc..0f22cad926fc 100644 --- a/pkg/goanalysis/packages/errors.go +++ b/pkg/goanalysis/pkgerrors/errors.go @@ -1,4 +1,4 @@ -package packages +package pkgerrors import ( "errors" diff --git a/pkg/goanalysis/packages/util.go b/pkg/goanalysis/pkgerrors/util.go similarity index 99% rename from pkg/goanalysis/packages/util.go rename to pkg/goanalysis/pkgerrors/util.go index 6a7789ebb730..b74d2b9a7ec6 100644 --- a/pkg/goanalysis/packages/util.go +++ b/pkg/goanalysis/pkgerrors/util.go @@ -1,4 +1,4 @@ -package packages +package pkgerrors import ( "fmt" diff --git a/pkg/goanalysis/packages/util_test.go b/pkg/goanalysis/pkgerrors/util_test.go similarity index 99% rename from pkg/goanalysis/packages/util_test.go rename to pkg/goanalysis/pkgerrors/util_test.go index 5308429980ec..1e014ea45e8e 100644 --- a/pkg/goanalysis/packages/util_test.go +++ b/pkg/goanalysis/pkgerrors/util_test.go @@ -1,4 +1,4 @@ -package packages +package pkgerrors import ( "testing" From bc47fb898adbb36423e93ad797e1e091cc69d94a Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:25:10 +0200 Subject: [PATCH 4/9] chore: rename files --- pkg/goanalysis/pkgerrors/{util.go => extract.go} | 0 pkg/goanalysis/pkgerrors/{util_test.go => extract_test.go} | 0 pkg/goanalysis/pkgerrors/{errors.go => parse.go} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename pkg/goanalysis/pkgerrors/{util.go => extract.go} (100%) rename pkg/goanalysis/pkgerrors/{util_test.go => extract_test.go} (100%) rename pkg/goanalysis/pkgerrors/{errors.go => parse.go} (100%) diff --git a/pkg/goanalysis/pkgerrors/util.go b/pkg/goanalysis/pkgerrors/extract.go similarity index 100% rename from pkg/goanalysis/pkgerrors/util.go rename to pkg/goanalysis/pkgerrors/extract.go diff --git a/pkg/goanalysis/pkgerrors/util_test.go b/pkg/goanalysis/pkgerrors/extract_test.go similarity index 100% rename from pkg/goanalysis/pkgerrors/util_test.go rename to pkg/goanalysis/pkgerrors/extract_test.go diff --git a/pkg/goanalysis/pkgerrors/errors.go b/pkg/goanalysis/pkgerrors/parse.go similarity index 100% rename from pkg/goanalysis/pkgerrors/errors.go rename to pkg/goanalysis/pkgerrors/parse.go From 8ebdf52e28061b33b9dd730d73008c558df67eda Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:27:33 +0200 Subject: [PATCH 5/9] chore: move files --- pkg/goanalysis/{ => pkgerrors}/errors.go | 9 ++++----- pkg/goanalysis/{ => pkgerrors}/errors_test.go | 2 +- pkg/goanalysis/runner_action.go | 3 ++- pkg/goanalysis/runners.go | 3 ++- 4 files changed, 9 insertions(+), 8 deletions(-) rename pkg/goanalysis/{ => pkgerrors}/errors.go (82%) rename pkg/goanalysis/{ => pkgerrors}/errors_test.go (97%) diff --git a/pkg/goanalysis/errors.go b/pkg/goanalysis/pkgerrors/errors.go similarity index 82% rename from pkg/goanalysis/errors.go rename to pkg/goanalysis/pkgerrors/errors.go index a60d34a73f30..2392a300f693 100644 --- a/pkg/goanalysis/errors.go +++ b/pkg/goanalysis/pkgerrors/errors.go @@ -1,4 +1,4 @@ -package goanalysis +package pkgerrors import ( "errors" @@ -6,7 +6,6 @@ import ( "golang.org/x/tools/go/packages" - "github.com/golangci/golangci-lint/pkg/goanalysis/pkgerrors" "github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/result" ) @@ -19,7 +18,7 @@ func (e *IllTypedError) Error() string { return fmt.Sprintf("errors in package: %v", e.Pkg.Errors) } -func buildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]result.Issue, error) { +func BuildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]result.Issue, error) { var issues []result.Issue uniqReportedIssues := map[string]bool{} @@ -36,7 +35,7 @@ func buildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu continue } - for _, err := range pkgerrors.ExtractErrors(ill.Pkg) { + for _, err := range ExtractErrors(ill.Pkg) { i, perr := parseError(err) if perr != nil { // failed to parse if uniqReportedIssues[err.Msg] { @@ -59,7 +58,7 @@ func buildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu } func parseError(srcErr packages.Error) (*result.Issue, error) { - pos, err := pkgerrors.ParseErrorPosition(srcErr.Pos) + pos, err := ParseErrorPosition(srcErr.Pos) if err != nil { return nil, err } diff --git a/pkg/goanalysis/errors_test.go b/pkg/goanalysis/pkgerrors/errors_test.go similarity index 97% rename from pkg/goanalysis/errors_test.go rename to pkg/goanalysis/pkgerrors/errors_test.go index c33669e5bef6..86d6266692e5 100644 --- a/pkg/goanalysis/errors_test.go +++ b/pkg/goanalysis/pkgerrors/errors_test.go @@ -1,4 +1,4 @@ -package goanalysis +package pkgerrors import ( "fmt" diff --git a/pkg/goanalysis/runner_action.go b/pkg/goanalysis/runner_action.go index 6b57cb0c9abb..6e146cfd7e32 100644 --- a/pkg/goanalysis/runner_action.go +++ b/pkg/goanalysis/runner_action.go @@ -9,6 +9,7 @@ import ( "runtime/debug" "time" + "github.com/golangci/golangci-lint/pkg/goanalysis/pkgerrors" "golang.org/x/tools/go/analysis" "golang.org/x/tools/go/packages" "golang.org/x/tools/go/types/objectpath" @@ -184,7 +185,7 @@ func (act *action) analyze() { // It looks like there should be !pass.Analyzer.RunDespiteErrors // but govet's cgocall crashes on it. Govet itself contains !pass.Analyzer.RunDespiteErrors condition here, // but it exits before it if packages.Load have failed. - act.err = fmt.Errorf("analysis skipped: %w", &IllTypedError{Pkg: act.pkg}) + act.err = fmt.Errorf("analysis skipped: %w", &pkgerrors.IllTypedError{Pkg: act.pkg}) } else { startedAt = time.Now() act.result, act.err = pass.Analyzer.Run(pass) diff --git a/pkg/goanalysis/runners.go b/pkg/goanalysis/runners.go index b832fc32da6a..c02d33b79757 100644 --- a/pkg/goanalysis/runners.go +++ b/pkg/goanalysis/runners.go @@ -13,6 +13,7 @@ import ( "golang.org/x/tools/go/packages" "github.com/golangci/golangci-lint/internal/pkgcache" + "github.com/golangci/golangci-lint/pkg/goanalysis/pkgerrors" "github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/logutils" "github.com/golangci/golangci-lint/pkg/result" @@ -74,7 +75,7 @@ func runAnalyzers(cfg runAnalyzersConfig, lintCtx *linter.Context) ([]result.Iss return retIssues } - errIssues, err := buildIssuesFromIllTypedError(errs, lintCtx) + errIssues, err := pkgerrors.BuildIssuesFromIllTypedError(errs, lintCtx) if err != nil { return nil, err } From 14013e6ccc0260e02fd4e8d0cb271ce76f3bf381 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:29:25 +0200 Subject: [PATCH 6/9] chore: un-export functions --- pkg/goanalysis/pkgerrors/errors.go | 4 ++-- pkg/goanalysis/pkgerrors/extract.go | 4 ++-- pkg/goanalysis/pkgerrors/parse.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/goanalysis/pkgerrors/errors.go b/pkg/goanalysis/pkgerrors/errors.go index 2392a300f693..decbf33ad9a4 100644 --- a/pkg/goanalysis/pkgerrors/errors.go +++ b/pkg/goanalysis/pkgerrors/errors.go @@ -35,7 +35,7 @@ func BuildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu continue } - for _, err := range ExtractErrors(ill.Pkg) { + for _, err := range extractErrors(ill.Pkg) { i, perr := parseError(err) if perr != nil { // failed to parse if uniqReportedIssues[err.Msg] { @@ -58,7 +58,7 @@ func BuildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu } func parseError(srcErr packages.Error) (*result.Issue, error) { - pos, err := ParseErrorPosition(srcErr.Pos) + pos, err := parseErrorPosition(srcErr.Pos) if err != nil { return nil, err } diff --git a/pkg/goanalysis/pkgerrors/extract.go b/pkg/goanalysis/pkgerrors/extract.go index b74d2b9a7ec6..d1257e6638d6 100644 --- a/pkg/goanalysis/pkgerrors/extract.go +++ b/pkg/goanalysis/pkgerrors/extract.go @@ -12,7 +12,7 @@ import ( // ex: `/example/main.go:11:17: foobar` var reFile = regexp.MustCompile(`^.+\.go:\d+:\d+: .+`) -func ExtractErrors(pkg *packages.Package) []packages.Error { +func extractErrors(pkg *packages.Package) []packages.Error { errors := extractErrorsImpl(pkg, map[*packages.Package]bool{}) if len(errors) == 0 { return errors @@ -38,7 +38,7 @@ func ExtractErrors(pkg *packages.Package) []packages.Error { if len(pkg.GoFiles) != 0 { // errors were extracted from deps and have at least one file in package for i := range uniqErrors { - if _, parseErr := ParseErrorPosition(uniqErrors[i].Pos); parseErr == nil { + if _, parseErr := parseErrorPosition(uniqErrors[i].Pos); parseErr == nil { continue } diff --git a/pkg/goanalysis/pkgerrors/parse.go b/pkg/goanalysis/pkgerrors/parse.go index 0f22cad926fc..ced64666933f 100644 --- a/pkg/goanalysis/pkgerrors/parse.go +++ b/pkg/goanalysis/pkgerrors/parse.go @@ -8,7 +8,7 @@ import ( "strings" ) -func ParseErrorPosition(pos string) (*token.Position, error) { +func parseErrorPosition(pos string) (*token.Position, error) { // file:line(:colon) parts := strings.Split(pos, ":") if len(parts) == 1 { From de5a1b081315548b634b3eea1d056e4f7400bba2 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:30:53 +0200 Subject: [PATCH 7/9] chore: move parseError function --- pkg/goanalysis/pkgerrors/errors.go | 13 ------------- pkg/goanalysis/pkgerrors/parse.go | 16 ++++++++++++++++ .../pkgerrors/{errors_test.go => parse_test.go} | 0 3 files changed, 16 insertions(+), 13 deletions(-) rename pkg/goanalysis/pkgerrors/{errors_test.go => parse_test.go} (100%) diff --git a/pkg/goanalysis/pkgerrors/errors.go b/pkg/goanalysis/pkgerrors/errors.go index decbf33ad9a4..3195bffe353a 100644 --- a/pkg/goanalysis/pkgerrors/errors.go +++ b/pkg/goanalysis/pkgerrors/errors.go @@ -56,16 +56,3 @@ func BuildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu return issues, nil } - -func parseError(srcErr packages.Error) (*result.Issue, error) { - pos, err := parseErrorPosition(srcErr.Pos) - if err != nil { - return nil, err - } - - return &result.Issue{ - Pos: *pos, - Text: srcErr.Msg, - FromLinter: "typecheck", - }, nil -} diff --git a/pkg/goanalysis/pkgerrors/parse.go b/pkg/goanalysis/pkgerrors/parse.go index ced64666933f..c13bd84d8941 100644 --- a/pkg/goanalysis/pkgerrors/parse.go +++ b/pkg/goanalysis/pkgerrors/parse.go @@ -6,8 +6,24 @@ import ( "go/token" "strconv" "strings" + + "github.com/golangci/golangci-lint/pkg/result" + "golang.org/x/tools/go/packages" ) +func parseError(srcErr packages.Error) (*result.Issue, error) { + pos, err := parseErrorPosition(srcErr.Pos) + if err != nil { + return nil, err + } + + return &result.Issue{ + Pos: *pos, + Text: srcErr.Msg, + FromLinter: "typecheck", + }, nil +} + func parseErrorPosition(pos string) (*token.Position, error) { // file:line(:colon) parts := strings.Split(pos, ":") diff --git a/pkg/goanalysis/pkgerrors/errors_test.go b/pkg/goanalysis/pkgerrors/parse_test.go similarity index 100% rename from pkg/goanalysis/pkgerrors/errors_test.go rename to pkg/goanalysis/pkgerrors/parse_test.go From fcf5e235faac04e0a39d9dd4ea691e0431a01d71 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:34:41 +0200 Subject: [PATCH 8/9] chore: fix imports --- pkg/goanalysis/pkgerrors/parse.go | 3 ++- pkg/goanalysis/runner_action.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/goanalysis/pkgerrors/parse.go b/pkg/goanalysis/pkgerrors/parse.go index c13bd84d8941..b25b50f713ed 100644 --- a/pkg/goanalysis/pkgerrors/parse.go +++ b/pkg/goanalysis/pkgerrors/parse.go @@ -7,8 +7,9 @@ import ( "strconv" "strings" - "github.com/golangci/golangci-lint/pkg/result" "golang.org/x/tools/go/packages" + + "github.com/golangci/golangci-lint/pkg/result" ) func parseError(srcErr packages.Error) (*result.Issue, error) { diff --git a/pkg/goanalysis/runner_action.go b/pkg/goanalysis/runner_action.go index 6e146cfd7e32..58ea297ea92b 100644 --- a/pkg/goanalysis/runner_action.go +++ b/pkg/goanalysis/runner_action.go @@ -9,13 +9,13 @@ import ( "runtime/debug" "time" - "github.com/golangci/golangci-lint/pkg/goanalysis/pkgerrors" "golang.org/x/tools/go/analysis" "golang.org/x/tools/go/packages" "golang.org/x/tools/go/types/objectpath" "github.com/golangci/golangci-lint/internal/errorutil" "github.com/golangci/golangci-lint/internal/pkgcache" + "github.com/golangci/golangci-lint/pkg/goanalysis/pkgerrors" ) type actionAllocator struct { From d53a841ff88f76b48b92667c1be558f31187fffb Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 24 Apr 2024 03:40:54 +0200 Subject: [PATCH 9/9] chore: rename i to issue --- pkg/goanalysis/pkgerrors/errors.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/goanalysis/pkgerrors/errors.go b/pkg/goanalysis/pkgerrors/errors.go index 3195bffe353a..91f6dd39d755 100644 --- a/pkg/goanalysis/pkgerrors/errors.go +++ b/pkg/goanalysis/pkgerrors/errors.go @@ -36,7 +36,7 @@ func BuildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu } for _, err := range extractErrors(ill.Pkg) { - i, perr := parseError(err) + issue, perr := parseError(err) if perr != nil { // failed to parse if uniqReportedIssues[err.Msg] { continue @@ -44,8 +44,8 @@ func BuildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu uniqReportedIssues[err.Msg] = true lintCtx.Log.Errorf("typechecking error: %s", err.Msg) } else { - i.Pkg = ill.Pkg // to save to cache later - issues = append(issues, *i) + issue.Pkg = ill.Pkg // to save to cache later + issues = append(issues, *issue) } } }