Class: RuboCop::ConfigValidator

Inherits:
Object
  • Object
show all
Extended by:
SimpleForwardable
Defined in:
lib/rubocop/config_validator.rb

Overview

Handles validation of configuration, for example cop names, parameter names, and Ruby versions.

Constant Summary collapse

COMMON_PARAMS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

%w[Exclude Include Severity inherit_mode AutoCorrect StyleGuide Details
Enabled].freeze
INTERNAL_PARAMS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

%w[Description StyleGuide
VersionAdded VersionChanged VersionRemoved
Reference Safe SafeAutoCorrect].freeze
NEW_COPS_VALUES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

%w[pending disable enable].freeze
CONFIG_CHECK_AUTOCORRECTS =
%w[always contextual disabled].freeze

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ ConfigValidator

Returns a new instance of ConfigValidator.



27
28
29
30
31
# File 'lib/rubocop/config_validator.rb', line 27

def initialize(config)
  @config = config
  @config_obsoletion = ConfigObsoletion.new(config)
  @target_ruby = TargetRuby.new(config)
end

Instance Method Details

#target_ruby_versionObject



63
64
65
# File 'lib/rubocop/config_validator.rb', line 63

def target_ruby_version
  target_ruby.version
end

#validateObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/rubocop/config_validator.rb', line 33

def validate
  check_cop_config_value(@config)
  reject_conflicting_safe_settings

  # Don't validate RuboCop's own files further. Avoids infinite recursion.
  return if @config.internal?

  valid_cop_names, invalid_cop_names = @config.keys.partition do |key|
    ConfigLoader.default_configuration.key?(key)
  end

  check_obsoletions

  alert_about_unrecognized_cops(invalid_cop_names)
  validate_new_cops_parameter
  validate_parameter_names(valid_cop_names)
  validate_enforced_styles(valid_cop_names)
  validate_syntax_cop
  reject_mutually_exclusive_defaults
end

#validate_after_resolutionObject

Validations that should only be run after all config resolving has taken place:

  • The target ruby version is only checked once the entire inheritance

chain has been loaded so that only the final value is validated, and any obsolete but overridden values are ignored.



59
60
61
# File 'lib/rubocop/config_validator.rb', line 59

def validate_after_resolution
  check_target_ruby
end

#validate_section_presence(name) ⇒ Object

Raises:



67
68
69
70
71
# File 'lib/rubocop/config_validator.rb', line 67

def validate_section_presence(name)
  return unless @config.key?(name) && @config[name].nil?

  raise ValidationError, "empty section #{name} found in #{smart_loaded_path}"
end