Skip to content

Commit 0b5384f

Browse files
committed
review
1 parent e4b4ebe commit 0b5384f

File tree

2 files changed

+39
-39
lines changed

2 files changed

+39
-39
lines changed

pkg/golinters/gocritic.go

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,18 @@ import (
2525

2626
const goCriticName = "gocritic"
2727

28-
const goCriticDebugKey = "gocritic"
29-
3028
var (
31-
goCriticDebugf = logutils.Debug(goCriticDebugKey)
32-
isGoCriticDebug = logutils.HaveDebugTag(goCriticDebugKey)
29+
goCriticDebugf = logutils.Debug(goCriticName)
30+
isGoCriticDebug = logutils.HaveDebugTag(goCriticName)
3331
)
3432

3533
func NewGoCritic(settings *config.GoCriticSettings, cfg *config.Config) *goanalysis.Linter {
3634
var mu sync.Mutex
3735
var resIssues []goanalysis.Issue
3836

3937
wrapper := &goCriticWrapper{
40-
settings: settings,
41-
cfg: cfg,
42-
sizes: types.SizesFor("gc", runtime.GOARCH),
38+
cfg: cfg,
39+
sizes: types.SizesFor("gc", runtime.GOARCH),
4340
}
4441

4542
analyzer := &analysis.Analyzer{
@@ -72,41 +69,41 @@ Dynamic rules are written declaratively with AST patterns, filters, report messa
7269
nil,
7370
).
7471
WithContextSetter(func(context *linter.Context) {
75-
wrapper.init()
72+
wrapper.init(settings, context.Log)
7673
}).
7774
WithIssuesReporter(func(*linter.Context) []goanalysis.Issue {
7875
return resIssues
7976
}).WithLoadMode(goanalysis.LoadModeTypesInfo)
8077
}
8178

8279
type goCriticWrapper struct {
83-
settings *config.GoCriticSettings
8480
settingsWrapper *goCriticSettingsWrapper
8581
cfg *config.Config
8682
sizes types.Sizes
8783
once sync.Once
8884
}
8985

90-
func (w *goCriticWrapper) init() {
91-
if w.settings != nil {
92-
// the 'defer' is here to catch the panic from checkers.InitEmbeddedRules()
93-
defer func() {
94-
if err := recover(); err != nil {
95-
linterLogger.Fatalf("%s: %v: setting an explicit GOROOT can fix this problem.", goCriticName, err)
96-
return
97-
}
98-
}()
99-
w.once.Do(checkers.InitEmbeddedRules)
100-
101-
settingsWrapper := newGoCriticSettingsWrapper(w.settings)
86+
func (w *goCriticWrapper) init(settings *config.GoCriticSettings, logger logutils.Log) {
87+
if settings == nil {
88+
return
89+
}
10290

103-
settingsWrapper.inferEnabledChecks(linterLogger)
104-
if err := settingsWrapper.validate(linterLogger); err != nil {
105-
linterLogger.Fatalf("%s: invalid settings: %s", goCriticName, err)
91+
w.once.Do(func() {
92+
err := checkers.InitEmbeddedRules()
93+
if err != nil {
94+
logger.Fatalf("%s: %v: setting an explicit GOROOT can fix this problem.", goCriticName, err)
10695
}
96+
})
97+
98+
settingsWrapper := newGoCriticSettingsWrapper(settings, logger)
99+
100+
settingsWrapper.inferEnabledChecks()
107101

108-
w.settingsWrapper = settingsWrapper
102+
if err := settingsWrapper.validate(); err != nil {
103+
logger.Fatalf("%s: invalid settings: %s", goCriticName, err)
109104
}
105+
106+
w.settingsWrapper = settingsWrapper
110107
}
111108

112109
func (w *goCriticWrapper) run(pass *analysis.Pass) ([]goanalysis.Issue, error) {
@@ -268,13 +265,15 @@ func (w *goCriticWrapper) normalizeCheckerParamsValue(p interface{}) interface{}
268265
type goCriticSettingsWrapper struct {
269266
*config.GoCriticSettings
270267

268+
logger logutils.Log
269+
271270
allCheckers []*gocriticlinter.CheckerInfo
272271
allCheckerMap map[string]*gocriticlinter.CheckerInfo
273272

274273
inferredEnabledChecks map[string]bool
275274
}
276275

277-
func newGoCriticSettingsWrapper(settings *config.GoCriticSettings) *goCriticSettingsWrapper {
276+
func newGoCriticSettingsWrapper(settings *config.GoCriticSettings, logger logutils.Log) *goCriticSettingsWrapper {
278277
allCheckers := gocriticlinter.GetCheckersInfo()
279278

280279
allCheckerMap := make(map[string]*gocriticlinter.CheckerInfo)
@@ -284,6 +283,7 @@ func newGoCriticSettingsWrapper(settings *config.GoCriticSettings) *goCriticSett
284283

285284
return &goCriticSettingsWrapper{
286285
GoCriticSettings: settings,
286+
logger: logger,
287287
allCheckers: allCheckers,
288288
allCheckerMap: allCheckerMap,
289289
inferredEnabledChecks: map[string]bool{},
@@ -343,7 +343,7 @@ func (s *goCriticSettingsWrapper) disabledCheckersDebugf() {
343343
}
344344
}
345345

346-
func (s *goCriticSettingsWrapper) inferEnabledChecks(log logutils.Log) {
346+
func (s *goCriticSettingsWrapper) inferEnabledChecks() {
347347
s.checkerTagsDebugf()
348348

349349
enabledByDefaultChecks := s.getDefaultEnabledCheckersNames()
@@ -371,7 +371,7 @@ func (s *goCriticSettingsWrapper) inferEnabledChecks(log logutils.Log) {
371371

372372
// DisabledTags
373373
if len(s.DisabledTags) != 0 {
374-
enabledChecks = s.filterByDisableTags(enabledChecks, s.DisabledTags, log)
374+
enabledChecks = s.filterByDisableTags(enabledChecks, s.DisabledTags)
375375
}
376376

377377
// EnabledChecks
@@ -381,7 +381,7 @@ func (s *goCriticSettingsWrapper) inferEnabledChecks(log logutils.Log) {
381381
alreadyEnabledChecksSet := stringsSliceToSet(enabledChecks)
382382
for _, enabledCheck := range s.EnabledChecks {
383383
if alreadyEnabledChecksSet[enabledCheck] {
384-
log.Warnf("No need to enable check %q: it's already enabled", enabledCheck)
384+
s.logger.Warnf("%s: no need to enable check %q: it's already enabled", goCriticName, enabledCheck)
385385
continue
386386
}
387387
enabledChecks = append(enabledChecks, enabledCheck)
@@ -395,8 +395,8 @@ func (s *goCriticSettingsWrapper) inferEnabledChecks(log logutils.Log) {
395395
enabledChecksSet := stringsSliceToSet(enabledChecks)
396396
for _, disabledCheck := range s.DisabledChecks {
397397
if !enabledChecksSet[disabledCheck] {
398-
log.Warnf("Gocritic check %q was explicitly disabled via config. However, as this check "+
399-
"is disabled by default, there is no need to explicitly disable it via config.", disabledCheck)
398+
s.logger.Warnf("%s: check %q was explicitly disabled via config. However, as this check "+
399+
"is disabled by default, there is no need to explicitly disable it via config.", goCriticName, disabledCheck)
400400
continue
401401
}
402402
delete(enabledChecksSet, disabledCheck)
@@ -418,7 +418,7 @@ func (s *goCriticSettingsWrapper) inferEnabledChecks(log logutils.Log) {
418418
s.disabledCheckersDebugf()
419419
}
420420

421-
func (s *goCriticSettingsWrapper) validate(log logutils.Log) error {
421+
func (s *goCriticSettingsWrapper) validate() error {
422422
if len(s.EnabledTags) == 0 {
423423
if len(s.EnabledChecks) != 0 && len(s.DisabledChecks) != 0 {
424424
return errors.New("both enabled and disabled check aren't allowed for gocritic")
@@ -454,7 +454,7 @@ func (s *goCriticSettingsWrapper) validate(log logutils.Log) error {
454454
return errors.Wrap(err, "validate disabled checks")
455455
}
456456

457-
if err := s.validateCheckerNames(log); err != nil {
457+
if err := s.validateCheckerNames(); err != nil {
458458
return errors.Wrap(err, "validation failed")
459459
}
460460

@@ -502,7 +502,7 @@ func (s *goCriticSettingsWrapper) getDefaultDisabledCheckersNames() []string {
502502
return disabled
503503
}
504504

505-
func (s *goCriticSettingsWrapper) validateCheckerNames(log logutils.Log) error {
505+
func (s *goCriticSettingsWrapper) validateCheckerNames() error {
506506
allowedNames := s.getAllCheckerNames()
507507

508508
for _, name := range s.EnabledChecks {
@@ -526,7 +526,7 @@ func (s *goCriticSettingsWrapper) validateCheckerNames(log logutils.Log) error {
526526
}
527527

528528
if !s.isCheckEnabled(checkName) {
529-
log.Warnf("%s: settings were provided for not enabled check %q", goCriticName, checkName)
529+
s.logger.Warnf("%s: settings were provided for not enabled check %q", goCriticName, checkName)
530530
}
531531
}
532532

@@ -543,13 +543,13 @@ func (s *goCriticSettingsWrapper) getLowerCasedParams() map[string]config.GoCrit
543543
return ret
544544
}
545545

546-
func (s *goCriticSettingsWrapper) filterByDisableTags(enabledChecks, disableTags []string, log logutils.Log) []string {
546+
func (s *goCriticSettingsWrapper) filterByDisableTags(enabledChecks, disableTags []string) []string {
547547
enabledChecksSet := stringsSliceToSet(enabledChecks)
548548

549549
for _, enabledCheck := range enabledChecks {
550550
checkInfo, checkInfoExists := s.allCheckerMap[enabledCheck]
551551
if !checkInfoExists {
552-
log.Warnf("%s: check %q was not exists via filtering disabled tags", goCriticName, enabledCheck)
552+
s.logger.Warnf("%s: check %q was not exists via filtering disabled tags", goCriticName, enabledCheck)
553553
continue
554554
}
555555

pkg/golinters/gocritic_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ func Test_filterByDisableTags(t *testing.T) {
2525
disabledTags := []string{"experimental", "opinionated"}
2626
enabledChecks := []string{"appendAssign", "sortSlice", "caseOrder", "dupImport"}
2727

28-
settingsWrapper := newGoCriticSettingsWrapper(nil)
28+
settingsWrapper := newGoCriticSettingsWrapper(nil, &tLog{})
2929

30-
filterEnabledChecks := settingsWrapper.filterByDisableTags(enabledChecks, disabledTags, &tLog{})
30+
filterEnabledChecks := settingsWrapper.filterByDisableTags(enabledChecks, disabledTags)
3131

3232
sort.Strings(filterEnabledChecks)
3333

0 commit comments

Comments
 (0)