Skip to content

Commit aec176a

Browse files
authored
dev: simplify linter constructors (#5796)
1 parent 8c225c3 commit aec176a

File tree

110 files changed

+970
-1508
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+970
-1508
lines changed

pkg/goanalysis/linter.go

+22-5
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@ import (
1313
"github.com/golangci/golangci-lint/v2/pkg/result"
1414
)
1515

16-
const (
17-
TheOnlyAnalyzerName = "the_only_name"
18-
TheOnlyanalyzerDoc = "the_only_doc"
19-
)
20-
2116
type LoadMode int
2217

2318
func (loadMode LoadMode) String() string {
@@ -55,6 +50,10 @@ func NewLinter(name, desc string, analyzers []*analysis.Analyzer, cfg map[string
5550
return &Linter{name: name, desc: desc, analyzers: analyzers, cfg: cfg}
5651
}
5752

53+
func NewLinterFromAnalyzer(analyzer *analysis.Analyzer) *Linter {
54+
return NewLinter(analyzer.Name, analyzer.Doc, []*analysis.Analyzer{analyzer}, nil)
55+
}
56+
5857
func (lnt *Linter) Run(_ context.Context, lintCtx *linter.Context) ([]result.Issue, error) {
5958
if err := lnt.preRun(lintCtx); err != nil {
6059
return nil, err
@@ -71,6 +70,24 @@ func (lnt *Linter) LoadMode() LoadMode {
7170
return lnt.loadMode
7271
}
7372

73+
func (lnt *Linter) WithDesc(desc string) *Linter {
74+
lnt.desc = desc
75+
76+
return lnt
77+
}
78+
79+
func (lnt *Linter) WithConfig(cfg map[string]any) *Linter {
80+
if len(cfg) == 0 {
81+
return lnt
82+
}
83+
84+
lnt.cfg = map[string]map[string]any{
85+
lnt.name: cfg,
86+
}
87+
88+
return lnt
89+
}
90+
7491
func (lnt *Linter) WithLoadMode(loadMode LoadMode) *Linter {
7592
lnt.loadMode = loadMode
7693
return lnt

pkg/golinters/arangolint/arangolint.go

+3-9
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@ package arangolint
22

33
import (
44
"go.augendre.info/arangolint/pkg/analyzer"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
87
)
98

109
func New() *goanalysis.Linter {
11-
a := analyzer.NewAnalyzer()
12-
13-
return goanalysis.NewLinter(
14-
a.Name,
15-
a.Doc,
16-
[]*analysis.Analyzer{a},
17-
nil,
18-
).WithLoadMode(goanalysis.LoadModeTypesInfo)
10+
return goanalysis.
11+
NewLinterFromAnalyzer(analyzer.NewAnalyzer()).
12+
WithLoadMode(goanalysis.LoadModeTypesInfo)
1913
}

pkg/golinters/asasalint/asasalint.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package asasalint
22

33
import (
44
"github.com/alingse/asasalint"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/config"
87
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
@@ -19,15 +18,12 @@ func New(settings *config.AsasalintSettings) *goanalysis.Linter {
1918
cfg.IgnoreTest = false
2019
}
2120

22-
a, err := asasalint.NewAnalyzer(cfg)
21+
analyzer, err := asasalint.NewAnalyzer(cfg)
2322
if err != nil {
2423
internal.LinterLogger.Fatalf("asasalint: create analyzer: %v", err)
2524
}
2625

27-
return goanalysis.NewLinter(
28-
a.Name,
29-
a.Doc,
30-
[]*analysis.Analyzer{a},
31-
nil,
32-
).WithLoadMode(goanalysis.LoadModeTypesInfo)
26+
return goanalysis.
27+
NewLinterFromAnalyzer(analyzer).
28+
WithLoadMode(goanalysis.LoadModeTypesInfo)
3329
}

pkg/golinters/asciicheck/asciicheck.go

+3-9
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@ package asciicheck
22

33
import (
44
"github.com/tdakkota/asciicheck"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
87
)
98

109
func New() *goanalysis.Linter {
11-
a := asciicheck.NewAnalyzer()
12-
13-
return goanalysis.NewLinter(
14-
a.Name,
15-
a.Doc,
16-
[]*analysis.Analyzer{a},
17-
nil,
18-
).WithLoadMode(goanalysis.LoadModeSyntax)
10+
return goanalysis.
11+
NewLinterFromAnalyzer(asciicheck.NewAnalyzer()).
12+
WithLoadMode(goanalysis.LoadModeSyntax)
1913
}

pkg/golinters/bidichk/bidichk.go

+6-10
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@ import (
44
"strings"
55

66
"github.com/breml/bidichk/pkg/bidichk"
7-
"golang.org/x/tools/go/analysis"
87

98
"github.com/golangci/golangci-lint/v2/pkg/config"
109
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
1110
)
1211

1312
func New(settings *config.BiDiChkSettings) *goanalysis.Linter {
14-
a := bidichk.NewAnalyzer()
13+
var cfg map[string]any
1514

16-
cfg := map[string]map[string]any{}
1715
if settings != nil {
1816
var opts []string
1917

@@ -45,15 +43,13 @@ func New(settings *config.BiDiChkSettings) *goanalysis.Linter {
4543
opts = append(opts, "POP-DIRECTIONAL-ISOLATE")
4644
}
4745

48-
cfg[a.Name] = map[string]any{
46+
cfg = map[string]any{
4947
"disallowed-runes": strings.Join(opts, ","),
5048
}
5149
}
5250

53-
return goanalysis.NewLinter(
54-
a.Name,
55-
"Checks for dangerous unicode character sequences",
56-
[]*analysis.Analyzer{a},
57-
cfg,
58-
).WithLoadMode(goanalysis.LoadModeSyntax)
51+
return goanalysis.
52+
NewLinterFromAnalyzer(bidichk.NewAnalyzer()).
53+
WithConfig(cfg).
54+
WithLoadMode(goanalysis.LoadModeSyntax)
5955
}

pkg/golinters/bodyclose/bodyclose.go

+3-9
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@ package bodyclose
22

33
import (
44
"github.com/timakin/bodyclose/passes/bodyclose"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
87
)
98

109
func New() *goanalysis.Linter {
11-
a := bodyclose.Analyzer
12-
13-
return goanalysis.NewLinter(
14-
a.Name,
15-
a.Doc,
16-
[]*analysis.Analyzer{a},
17-
nil,
18-
).WithLoadMode(goanalysis.LoadModeTypesInfo)
10+
return goanalysis.
11+
NewLinterFromAnalyzer(bodyclose.Analyzer).
12+
WithLoadMode(goanalysis.LoadModeTypesInfo)
1913
}

pkg/golinters/canonicalheader/canonicalheader.go

+3-9
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@ package canonicalheader
22

33
import (
44
"github.com/lasiar/canonicalheader"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
87
)
98

109
func New() *goanalysis.Linter {
11-
a := canonicalheader.Analyzer
12-
13-
return goanalysis.NewLinter(
14-
a.Name,
15-
a.Doc,
16-
[]*analysis.Analyzer{a},
17-
nil,
18-
).WithLoadMode(goanalysis.LoadModeTypesInfo)
10+
return goanalysis.
11+
NewLinterFromAnalyzer(canonicalheader.Analyzer).
12+
WithLoadMode(goanalysis.LoadModeTypesInfo)
1913
}

pkg/golinters/containedctx/containedctx.go

+3-9
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@ package containedctx
22

33
import (
44
"github.com/sivchari/containedctx"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
87
)
98

109
func New() *goanalysis.Linter {
11-
a := containedctx.Analyzer
12-
13-
return goanalysis.NewLinter(
14-
a.Name,
15-
a.Doc,
16-
[]*analysis.Analyzer{a},
17-
nil,
18-
).WithLoadMode(goanalysis.LoadModeTypesInfo)
10+
return goanalysis.
11+
NewLinterFromAnalyzer(containedctx.Analyzer).
12+
WithLoadMode(goanalysis.LoadModeTypesInfo)
1913
}

pkg/golinters/contextcheck/contextcheck.go

+6-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package contextcheck
22

33
import (
44
"github.com/kkHAIKE/contextcheck"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
87
"github.com/golangci/golangci-lint/v2/pkg/lint/linter"
@@ -11,12 +10,10 @@ import (
1110
func New() *goanalysis.Linter {
1211
analyzer := contextcheck.NewAnalyzer(contextcheck.Configuration{})
1312

14-
return goanalysis.NewLinter(
15-
analyzer.Name,
16-
analyzer.Doc,
17-
[]*analysis.Analyzer{analyzer},
18-
nil,
19-
).WithContextSetter(func(lintCtx *linter.Context) {
20-
analyzer.Run = contextcheck.NewRun(lintCtx.Packages, false)
21-
}).WithLoadMode(goanalysis.LoadModeTypesInfo)
13+
return goanalysis.
14+
NewLinterFromAnalyzer(analyzer).
15+
WithContextSetter(func(lintCtx *linter.Context) {
16+
analyzer.Run = contextcheck.NewRun(lintCtx.Packages, false)
17+
}).
18+
WithLoadMode(goanalysis.LoadModeTypesInfo)
2219
}

pkg/golinters/copyloopvar/copyloopvar.go

+7-13
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,22 @@ package copyloopvar
22

33
import (
44
"github.com/karamaru-alpha/copyloopvar"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/config"
87
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
98
)
109

1110
func New(settings *config.CopyLoopVarSettings) *goanalysis.Linter {
12-
a := copyloopvar.NewAnalyzer()
11+
var cfg map[string]any
1312

14-
var cfg map[string]map[string]any
1513
if settings != nil {
16-
cfg = map[string]map[string]any{
17-
a.Name: {
18-
"check-alias": settings.CheckAlias,
19-
},
14+
cfg = map[string]any{
15+
"check-alias": settings.CheckAlias,
2016
}
2117
}
2218

23-
return goanalysis.NewLinter(
24-
a.Name,
25-
a.Doc,
26-
[]*analysis.Analyzer{a},
27-
cfg,
28-
).WithLoadMode(goanalysis.LoadModeSyntax)
19+
return goanalysis.
20+
NewLinterFromAnalyzer(copyloopvar.NewAnalyzer()).
21+
WithConfig(cfg).
22+
WithLoadMode(goanalysis.LoadModeSyntax)
2923
}

pkg/golinters/cyclop/cyclop.go

+9-17
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,29 @@ package cyclop
22

33
import (
44
"github.com/bkielbasa/cyclop/pkg/analyzer"
5-
"golang.org/x/tools/go/analysis"
65

76
"github.com/golangci/golangci-lint/v2/pkg/config"
87
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
98
)
109

1110
func New(settings *config.CyclopSettings) *goanalysis.Linter {
12-
a := analyzer.NewAnalyzer()
11+
cfg := map[string]any{}
1312

14-
var cfg map[string]map[string]any
1513
if settings != nil {
16-
d := map[string]any{
17-
// Should be managed with `linters.exclusions.rules`.
18-
"skipTests": false,
19-
}
14+
// Should be managed with `linters.exclusions.rules`.
15+
cfg["skipTests"] = false
2016

2117
if settings.MaxComplexity != 0 {
22-
d["maxComplexity"] = settings.MaxComplexity
18+
cfg["maxComplexity"] = settings.MaxComplexity
2319
}
2420

2521
if settings.PackageAverage != 0 {
26-
d["packageAverage"] = settings.PackageAverage
22+
cfg["packageAverage"] = settings.PackageAverage
2723
}
28-
29-
cfg = map[string]map[string]any{a.Name: d}
3024
}
3125

32-
return goanalysis.NewLinter(
33-
a.Name,
34-
a.Doc,
35-
[]*analysis.Analyzer{a},
36-
cfg,
37-
).WithLoadMode(goanalysis.LoadModeSyntax)
26+
return goanalysis.
27+
NewLinterFromAnalyzer(analyzer.NewAnalyzer()).
28+
WithConfig(cfg).
29+
WithLoadMode(goanalysis.LoadModeSyntax)
3830
}

pkg/golinters/decorder/decorder.go

+4-9
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@ import (
44
"strings"
55

66
"gitlab.com/bosi/decorder"
7-
"golang.org/x/tools/go/analysis"
87

98
"github.com/golangci/golangci-lint/v2/pkg/config"
109
"github.com/golangci/golangci-lint/v2/pkg/goanalysis"
1110
)
1211

1312
func New(settings *config.DecorderSettings) *goanalysis.Linter {
14-
a := decorder.Analyzer
15-
1613
// disable all rules/checks by default
1714
cfg := map[string]any{
1815
"ignore-underscore-vars": false,
@@ -35,10 +32,8 @@ func New(settings *config.DecorderSettings) *goanalysis.Linter {
3532
cfg["disable-init-func-first-check"] = settings.DisableInitFuncFirstCheck
3633
}
3734

38-
return goanalysis.NewLinter(
39-
a.Name,
40-
a.Doc,
41-
[]*analysis.Analyzer{a},
42-
map[string]map[string]any{a.Name: cfg},
43-
).WithLoadMode(goanalysis.LoadModeSyntax)
35+
return goanalysis.
36+
NewLinterFromAnalyzer(decorder.Analyzer).
37+
WithConfig(cfg).
38+
WithLoadMode(goanalysis.LoadModeSyntax)
4439
}

0 commit comments

Comments
 (0)