@@ -11,6 +11,7 @@ import (
1111 "strings"
1212 "sync"
1313
14+ "github.com/go-critic/go-critic/checkers"
1415 gocriticlinter "github.com/go-critic/go-critic/framework/linter"
1516 "golang.org/x/tools/go/analysis"
1617
@@ -28,7 +29,7 @@ func NewGocritic(settings *config.GocriticSettings, cfg *config.Config) *goanaly
2829
2930 sizes := types .SizesFor ("gc" , runtime .GOARCH )
3031
31- wrapper := goCriticWrapper {
32+ wrapper := & goCriticWrapper {
3233 settings : settings ,
3334 cfg : cfg ,
3435 sizes : sizes ,
@@ -71,9 +72,12 @@ type goCriticWrapper struct {
7172 settings * config.GocriticSettings
7273 cfg * config.Config
7374 sizes types.Sizes
75+ once sync.Once
7476}
7577
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+
7781 linterCtx := gocriticlinter .NewContext (pass .Fset , w .sizes )
7882
7983 enabledCheckers , err := w .buildEnabledCheckers (linterCtx )
@@ -93,7 +97,7 @@ func (w goCriticWrapper) run(pass *analysis.Pass) ([]goanalysis.Issue, error) {
9397 return issues , nil
9498}
9599
96- func (w goCriticWrapper ) buildEnabledCheckers (linterCtx * gocriticlinter.Context ) ([]* gocriticlinter.Checker , error ) {
100+ func (w * goCriticWrapper ) buildEnabledCheckers (linterCtx * gocriticlinter.Context ) ([]* gocriticlinter.Checker , error ) {
97101 allParams := w .settings .GetLowercasedParams ()
98102
99103 var enabledCheckers []* gocriticlinter.Checker
0 commit comments