From f57573eb2dbc2c5f97ff17c27b9d1f673e31a88b Mon Sep 17 00:00:00 2001 From: "Sebastien Rosset (serosset)" Date: Thu, 17 Dec 2020 09:25:42 -0800 Subject: [PATCH 1/2] Validate gocritic settings. Return error if settings does not exist --- pkg/config/config_gocritic.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/pkg/config/config_gocritic.go b/pkg/config/config_gocritic.go index 26317a678b56..50aa6463378d 100644 --- a/pkg/config/config_gocritic.go +++ b/pkg/config/config_gocritic.go @@ -242,13 +242,7 @@ func (s *GocriticSettings) Validate(log logutils.Log) error { return errors.Wrap(err, "validate disabled checks") } - for checkName := range s.SettingsPerCheck { - if !s.IsCheckEnabled(checkName) { - log.Warnf("Gocritic settings were provided for not enabled check %q", checkName) - } - } - - if err := s.validateCheckerNames(); err != nil { + if err := s.validateCheckerNames(log); err != nil { return errors.Wrap(err, "validation failed") } @@ -272,6 +266,7 @@ func sprintStrings(ss []string) string { return fmt.Sprint(ss) } +// getAllCheckerNames returns a map containing all checker names supported by gocritic. func getAllCheckerNames() map[string]bool { allCheckerNames := map[string]bool{} for _, checker := range allGocriticCheckers { @@ -311,7 +306,7 @@ func getDefaultDisabledGocriticCheckersNames() []string { return disabled } -func (s *GocriticSettings) validateCheckerNames() error { +func (s *GocriticSettings) validateCheckerNames(log logutils.Log) error { allowedNames := getAllCheckerNames() for _, name := range s.EnabledChecks { @@ -328,6 +323,16 @@ func (s *GocriticSettings) validateCheckerNames() error { } } + for checkName := range s.SettingsPerCheck { + if _, ok := allowedNames[checkName]; !ok { + return fmt.Errorf("Invalid setting, checker %s doesn't exist, all existing checkers: %s", + checkName, sprintAllowedCheckerNames(allowedNames)) + } + if !s.IsCheckEnabled(checkName) { + log.Warnf("Gocritic settings were provided for not enabled check %q", checkName) + } + } + return nil } From 32f194707f289e5c570d1055ef96d547fb79d7bf Mon Sep 17 00:00:00 2001 From: "Sebastien Rosset (serosset)" Date: Thu, 17 Dec 2020 09:48:30 -0800 Subject: [PATCH 2/2] Validate gocritic settings. Return error if settings does not exist --- pkg/config/config_gocritic.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/config/config_gocritic.go b/pkg/config/config_gocritic.go index 50aa6463378d..ac0d6445d79d 100644 --- a/pkg/config/config_gocritic.go +++ b/pkg/config/config_gocritic.go @@ -325,7 +325,7 @@ func (s *GocriticSettings) validateCheckerNames(log logutils.Log) error { for checkName := range s.SettingsPerCheck { if _, ok := allowedNames[checkName]; !ok { - return fmt.Errorf("Invalid setting, checker %s doesn't exist, all existing checkers: %s", + return fmt.Errorf("invalid setting, checker %s doesn't exist, all existing checkers: %s", checkName, sprintAllowedCheckerNames(allowedNames)) } if !s.IsCheckEnabled(checkName) {