Skip to content

Commit ab90763

Browse files
authored
Add recvcheck linter (#5014)
1 parent dcb6a57 commit ab90763

File tree

8 files changed

+57
-0
lines changed

8 files changed

+57
-0
lines changed

.golangci.next.reference.yml

+2
Original file line numberDiff line numberDiff line change
@@ -2689,6 +2689,7 @@ linters:
26892689
- promlinter
26902690
- protogetter
26912691
- reassign
2692+
- recvcheck
26922693
- revive
26932694
- rowserrcheck
26942695
- sloglint
@@ -2804,6 +2805,7 @@ linters:
28042805
- promlinter
28052806
- protogetter
28062807
- reassign
2808+
- recvcheck
28072809
- revive
28082810
- rowserrcheck
28092811
- sloglint

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ require (
8686
github.com/pelletier/go-toml/v2 v2.2.3
8787
github.com/polyfloyd/go-errorlint v1.6.0
8888
github.com/quasilyte/go-ruleguard/dsl v0.3.22
89+
github.com/raeperd/recvcheck v0.1.2
8990
github.com/ryancurrah/gomodguard v1.3.5
9091
github.com/ryanrolds/sqlclosecheck v0.5.1
9192
github.com/sanposhiho/wastedassign/v2 v2.0.7

go.sum

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsonschema/golangci.next.jsonschema.json

+1
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,7 @@
388388
"promlinter",
389389
"protogetter",
390390
"reassign",
391+
"recvcheck",
391392
"revive",
392393
"rowserrcheck",
393394
"scopelint",

pkg/golinters/recvcheck/recvcheck.go

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package recvcheck
2+
3+
import (
4+
"github.com/raeperd/recvcheck"
5+
"golang.org/x/tools/go/analysis"
6+
7+
"github.com/golangci/golangci-lint/pkg/goanalysis"
8+
)
9+
10+
func New() *goanalysis.Linter {
11+
a := recvcheck.Analyzer
12+
13+
return goanalysis.NewLinter(
14+
a.Name,
15+
a.Doc,
16+
[]*analysis.Analyzer{a},
17+
nil,
18+
).WithLoadMode(goanalysis.LoadModeTypesInfo)
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package recvcheck_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/golangci/golangci-lint/test/testshared/integration"
7+
)
8+
9+
func TestFromTestdata(t *testing.T) {
10+
integration.RunTestdata(t)
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//golangcitest:args -Erecvcheck
2+
package testdata
3+
4+
import "fmt"
5+
6+
type Bar struct{} // want `the methods of "Bar" use pointer receiver and non-pointer receiver.`
7+
8+
func (b Bar) A() {
9+
fmt.Println("A")
10+
}
11+
12+
func (b *Bar) B() {
13+
fmt.Println("B")
14+
}

pkg/lint/lintersdb/builder_linter.go

+7
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ import (
8585
"github.com/golangci/golangci-lint/pkg/golinters/promlinter"
8686
"github.com/golangci/golangci-lint/pkg/golinters/protogetter"
8787
"github.com/golangci/golangci-lint/pkg/golinters/reassign"
88+
"github.com/golangci/golangci-lint/pkg/golinters/recvcheck"
8889
"github.com/golangci/golangci-lint/pkg/golinters/revive"
8990
"github.com/golangci/golangci-lint/pkg/golinters/rowserrcheck"
9091
"github.com/golangci/golangci-lint/pkg/golinters/sloglint"
@@ -657,6 +658,12 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
657658
WithLoadForGoAnalysis().
658659
WithURL("https://github.com/curioswitch/go-reassign"),
659660

661+
linter.NewConfig(recvcheck.New()).
662+
WithSince("v1.62.0").
663+
WithPresets(linter.PresetBugs).
664+
WithLoadForGoAnalysis().
665+
WithURL("https://github.com/raeperd/recvcheck"),
666+
660667
linter.NewConfig(revive.New(&cfg.LintersSettings.Revive)).
661668
WithSince("v1.37.0").
662669
WithPresets(linter.PresetStyle, linter.PresetMetaLinter).

0 commit comments

Comments
 (0)