@@ -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.
275270func 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