From ff56d1ba644b80559febbbfd38eb7545f7d48cd2 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 5 Apr 2025 00:36:36 +0200 Subject: [PATCH 1/3] feat: suggested fixes --- sloglint.go | 12 +++++++++++- sloglint_test.go | 2 +- testdata/src/discard_handler/discard_handler.go | 6 +++--- .../src/discard_handler/discard_handler.go.golden | 11 +++++++++++ 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 testdata/src/discard_handler/discard_handler.go.golden diff --git a/sloglint.go b/sloglint.go index ae8f203..a4212fd 100644 --- a/sloglint.go +++ b/sloglint.go @@ -218,7 +218,17 @@ func visit(pass *analysis.Pass, opts *Options, node ast.Node, stack []ast.Node) if sel, ok := call.Args[0].(*ast.SelectorExpr); ok { if obj := pass.TypesInfo.ObjectOf(sel.Sel); obj != nil { if obj.Pkg().Name() == "io" && obj.Name() == "Discard" { - pass.Reportf(call.Pos(), "use slog.DiscardHandler instead") + pass.Report(analysis.Diagnostic{ + Pos: call.Pos(), + Message: "use slog.DiscardHandler instead", + SuggestedFixes: []analysis.SuggestedFix{{ + TextEdits: []analysis.TextEdit{{ + Pos: call.Pos(), + End: call.End(), + NewText: []byte("slog.DiscardHandler()"), + }}, + }}, + }) } } } diff --git a/sloglint_test.go b/sloglint_test.go index 7f63cee..40f7366 100644 --- a/sloglint_test.go +++ b/sloglint_test.go @@ -33,7 +33,7 @@ func TestAnalyzer(t *testing.T) { t.Run(name, func(t *testing.T) { analyzer := New(&tt.opts) testdata := analysistest.TestData() - analysistest.Run(t, testdata, analyzer, tt.dir) + analysistest.RunWithSuggestedFixes(t, testdata, analyzer, tt.dir) }) } } diff --git a/testdata/src/discard_handler/discard_handler.go b/testdata/src/discard_handler/discard_handler.go index 9ec0c3c..ff64573 100644 --- a/testdata/src/discard_handler/discard_handler.go +++ b/testdata/src/discard_handler/discard_handler.go @@ -5,7 +5,7 @@ import ( "log/slog" ) -func tests() { - slog.NewTextHandler(io.Discard, nil) // want `use slog.DiscardHandler instead` - slog.NewJSONHandler(io.Discard, nil) // want `use slog.DiscardHandler instead` +func _() { + _ = slog.NewTextHandler(io.Discard, nil) // want `use slog.DiscardHandler instead` + _ = slog.NewJSONHandler(io.Discard, nil) // want `use slog.DiscardHandler instead` } diff --git a/testdata/src/discard_handler/discard_handler.go.golden b/testdata/src/discard_handler/discard_handler.go.golden new file mode 100644 index 0000000..0d148b5 --- /dev/null +++ b/testdata/src/discard_handler/discard_handler.go.golden @@ -0,0 +1,11 @@ +package discard_handler + +import ( + "io" + "log/slog" +) + +func _() { + _ = slog.DiscardHandler() // want `use slog.DiscardHandler instead` + _ = slog.DiscardHandler() // want `use slog.DiscardHandler instead` +} From c9de39a0ed92206f4e2603aaccd91f57af95aa8f Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 5 Apr 2025 00:58:24 +0200 Subject: [PATCH 2/3] chore: run CI on PR of PR --- .github/workflows/checks.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index b81ecd8..9868a07 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -4,7 +4,6 @@ on: push: branches: [ main ] pull_request: - branches: [ main ] workflow_dispatch: jobs: From 2617c4dad46a79d8c21afd588e68f5f3fa52f03b Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 5 Apr 2025 13:12:42 +0200 Subject: [PATCH 3/3] review --- sloglint.go | 2 +- testdata/src/discard_handler/discard_handler.go.golden | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sloglint.go b/sloglint.go index a4212fd..48e7591 100644 --- a/sloglint.go +++ b/sloglint.go @@ -225,7 +225,7 @@ func visit(pass *analysis.Pass, opts *Options, node ast.Node, stack []ast.Node) TextEdits: []analysis.TextEdit{{ Pos: call.Pos(), End: call.End(), - NewText: []byte("slog.DiscardHandler()"), + NewText: []byte("slog.DiscardHandler"), }}, }}, }) diff --git a/testdata/src/discard_handler/discard_handler.go.golden b/testdata/src/discard_handler/discard_handler.go.golden index 0d148b5..0861c7a 100644 --- a/testdata/src/discard_handler/discard_handler.go.golden +++ b/testdata/src/discard_handler/discard_handler.go.golden @@ -6,6 +6,6 @@ import ( ) func _() { - _ = slog.DiscardHandler() // want `use slog.DiscardHandler instead` - _ = slog.DiscardHandler() // want `use slog.DiscardHandler instead` + _ = slog.DiscardHandler // want `use slog.DiscardHandler instead` + _ = slog.DiscardHandler // want `use slog.DiscardHandler instead` }