From 8a570ff0bbbad0fc31ad877f55a3690fb49fd426 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 29 Jul 2026 06:11:01 +0000 Subject: [PATCH 1/3] Initial plan From 606ded315ed1aed6cc144ee202edc9eaf8b7ddba Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 29 Jul 2026 06:21:39 +0000 Subject: [PATCH 2/3] Wire filecheck into jsonmarshalignoredeerror Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../jsonmarshalignoredeerror.go | 15 ++++++++++++++- .../src/jsonmarshalignoredeerror/generated.go | 11 +++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go diff --git a/pkg/linters/jsonmarshalignoredeerror/jsonmarshalignoredeerror.go b/pkg/linters/jsonmarshalignoredeerror/jsonmarshalignoredeerror.go index a3e1b8d0288..af08b8c1178 100644 --- a/pkg/linters/jsonmarshalignoredeerror/jsonmarshalignoredeerror.go +++ b/pkg/linters/jsonmarshalignoredeerror/jsonmarshalignoredeerror.go @@ -10,6 +10,7 @@ import ( "golang.org/x/tools/go/analysis/passes/inspect" "github.com/github/gh-aw/pkg/linters/internal/astutil" + "github.com/github/gh-aw/pkg/linters/internal/filecheck" "github.com/github/gh-aw/pkg/linters/internal/nolint" "github.com/github/gh-aw/pkg/logger" ) @@ -21,7 +22,7 @@ var Analyzer = &analysis.Analyzer{ Name: "jsonmarshalignoredeerror", Doc: "reports json.Marshal and json.Unmarshal calls where the error return is discarded", URL: "https://github.com/github/gh-aw/tree/main/pkg/linters/jsonmarshalignoredeerror", - Requires: []*analysis.Analyzer{inspect.Analyzer, nolint.Analyzer}, + Requires: []*analysis.Analyzer{inspect.Analyzer, nolint.Analyzer, filecheck.Analyzer}, Run: run, } @@ -35,12 +36,24 @@ func run(pass *analysis.Pass) (any, error) { if err != nil { return nil, err } + generatedFiles, err := filecheck.Index(pass) + if err != nil { + return nil, err + } nodeFilter := []ast.Node{(*ast.AssignStmt)(nil), (*ast.ExprStmt)(nil)} insp.Preorder(nodeFilter, func(n ast.Node) { switch stmt := n.(type) { case *ast.AssignStmt: + position := pass.Fset.PositionFor(stmt.Pos(), false) + if filecheck.ShouldSkipFilename(position.Filename, generatedFiles) { + return + } checkDiscardedJSONAssign(pass, stmt, noLintIndex) case *ast.ExprStmt: + position := pass.Fset.PositionFor(stmt.Pos(), false) + if filecheck.ShouldSkipFilename(position.Filename, generatedFiles) { + return + } checkDiscardedJSONExpr(pass, stmt, noLintIndex) } }) diff --git a/pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go b/pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go new file mode 100644 index 00000000000..c1f99395e46 --- /dev/null +++ b/pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go @@ -0,0 +1,11 @@ +// Code generated by tests. DO NOT EDIT. + +package jsonmarshalignoredeerror + +import "encoding/json" + +func generatedBad() { + f := Foo{X: 1} + val, _ := json.Marshal(f) + _ = val +} From 87ccbc75c73c294fb2feb8af0399c59aa8c9b36b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 29 Jul 2026 06:45:11 +0000 Subject: [PATCH 3/3] Add bare json.Marshal call to generated fixture to cover ExprStmt skip guard Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../testdata/src/jsonmarshalignoredeerror/generated.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go b/pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go index c1f99395e46..2c989cd2211 100644 --- a/pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go +++ b/pkg/linters/jsonmarshalignoredeerror/testdata/src/jsonmarshalignoredeerror/generated.go @@ -8,4 +8,5 @@ func generatedBad() { f := Foo{X: 1} val, _ := json.Marshal(f) _ = val + json.Marshal(f) }