@@ -11,6 +11,7 @@ import (
11
11
"strings"
12
12
"sync"
13
13
14
+ "github.com/go-critic/go-critic/checkers"
14
15
gocriticlinter "github.com/go-critic/go-critic/framework/linter"
15
16
"golang.org/x/tools/go/analysis"
16
17
@@ -28,7 +29,7 @@ func NewGocritic(settings *config.GocriticSettings, cfg *config.Config) *goanaly
28
29
29
30
sizes := types .SizesFor ("gc" , runtime .GOARCH )
30
31
31
- wrapper := goCriticWrapper {
32
+ wrapper := & goCriticWrapper {
32
33
settings : settings ,
33
34
cfg : cfg ,
34
35
sizes : sizes ,
@@ -71,9 +72,12 @@ type goCriticWrapper struct {
71
72
settings * config.GocriticSettings
72
73
cfg * config.Config
73
74
sizes types.Sizes
75
+ once sync.Once
74
76
}
75
77
76
- func (w goCriticWrapper ) run (pass * analysis.Pass ) ([]goanalysis.Issue , error ) {
78
+ func (w * goCriticWrapper ) run (pass * analysis.Pass ) ([]goanalysis.Issue , error ) {
79
+ w .once .Do (checkers .InitEmbeddedRules )
80
+
77
81
linterCtx := gocriticlinter .NewContext (pass .Fset , w .sizes )
78
82
79
83
enabledCheckers , err := w .buildEnabledCheckers (linterCtx )
@@ -93,7 +97,7 @@ func (w goCriticWrapper) run(pass *analysis.Pass) ([]goanalysis.Issue, error) {
93
97
return issues , nil
94
98
}
95
99
96
- func (w goCriticWrapper ) buildEnabledCheckers (linterCtx * gocriticlinter.Context ) ([]* gocriticlinter.Checker , error ) {
100
+ func (w * goCriticWrapper ) buildEnabledCheckers (linterCtx * gocriticlinter.Context ) ([]* gocriticlinter.Checker , error ) {
97
101
allParams := w .settings .GetLowercasedParams ()
98
102
99
103
var enabledCheckers []* gocriticlinter.Checker
0 commit comments