Skip to content

Commit c3ac7b3

Browse files
sebastien-rossetashanbrown
authored andcommitted
Validate gocritic settings. Return error if settings includes a unsupported gocritic checker (golangci#1563)
1 parent 95d2c3a commit c3ac7b3

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

pkg/config/config_gocritic.go

+13-8
Original file line numberDiff line numberDiff line change
@@ -242,13 +242,7 @@ func (s *GocriticSettings) Validate(log logutils.Log) error {
242242
return errors.Wrap(err, "validate disabled checks")
243243
}
244244

245-
for checkName := range s.SettingsPerCheck {
246-
if !s.IsCheckEnabled(checkName) {
247-
log.Warnf("Gocritic settings were provided for not enabled check %q", checkName)
248-
}
249-
}
250-
251-
if err := s.validateCheckerNames(); err != nil {
245+
if err := s.validateCheckerNames(log); err != nil {
252246
return errors.Wrap(err, "validation failed")
253247
}
254248

@@ -272,6 +266,7 @@ func sprintStrings(ss []string) string {
272266
return fmt.Sprint(ss)
273267
}
274268

269+
// getAllCheckerNames returns a map containing all checker names supported by gocritic.
275270
func getAllCheckerNames() map[string]bool {
276271
allCheckerNames := map[string]bool{}
277272
for _, checker := range allGocriticCheckers {
@@ -311,7 +306,7 @@ func getDefaultDisabledGocriticCheckersNames() []string {
311306
return disabled
312307
}
313308

314-
func (s *GocriticSettings) validateCheckerNames() error {
309+
func (s *GocriticSettings) validateCheckerNames(log logutils.Log) error {
315310
allowedNames := getAllCheckerNames()
316311

317312
for _, name := range s.EnabledChecks {
@@ -328,6 +323,16 @@ func (s *GocriticSettings) validateCheckerNames() error {
328323
}
329324
}
330325

326+
for checkName := range s.SettingsPerCheck {
327+
if _, ok := allowedNames[checkName]; !ok {
328+
return fmt.Errorf("invalid setting, checker %s doesn't exist, all existing checkers: %s",
329+
checkName, sprintAllowedCheckerNames(allowedNames))
330+
}
331+
if !s.IsCheckEnabled(checkName) {
332+
log.Warnf("Gocritic settings were provided for not enabled check %q", checkName)
333+
}
334+
}
335+
331336
return nil
332337
}
333338

0 commit comments

Comments
 (0)