class RuboCop::Cop::InternalAffairs::UndefinedConfig
Looks for references to a cop configuration key that isn’t defined in config/default.yml.
Constants
- ALLOWED_CONFIGURATIONS
- MSG
- RESTRICT_ON_SEND
Attributes
config_for_cop[R]
cop_class_name[R]
Public Instance Methods
on_new_investigation()
click to toggle source
Calls superclass method
RuboCop::Cop::Base#on_new_investigation
# File lib/rubocop/cop/internal_affairs/undefined_config.rb, line 27 def on_new_investigation super return unless processed_source.ast cop_class = cop_class_def(processed_source.ast).first return unless (@cop_class_name = extract_cop_name(cop_class)) @config_for_cop = RuboCop::ConfigLoader.default_configuration.for_cop(@cop_class_name) end
on_send(node)
click to toggle source
# File lib/rubocop/cop/internal_affairs/undefined_config.rb, line 37 def on_send(node) return unless cop_class_name return unless (config_name_node = cop_config_accessor?(node)) return if always_allowed?(config_name_node) return if configuration_key_defined?(config_name_node) message = format(MSG, name: config_name_node.value, cop: cop_class_name) add_offense(config_name_node, message: message) end
Private Instance Methods
always_allowed?(node)
click to toggle source
# File lib/rubocop/cop/internal_affairs/undefined_config.rb, line 63 def always_allowed?(node) ALLOWED_CONFIGURATIONS.include?(node.value) end
configuration_key_defined?(node)
click to toggle source
# File lib/rubocop/cop/internal_affairs/undefined_config.rb, line 67 def configuration_key_defined?(node) config_for_cop.key?(node.value) end
extract_cop_name(class_node)
click to toggle source
# File lib/rubocop/cop/internal_affairs/undefined_config.rb, line 51 def extract_cop_name(class_node) return unless class_node segments = [class_node].concat( class_node.each_ancestor(:class, :module).take_while do |n| n.identifier.short_name != :Cop end ) segments.reverse_each.map { |s| s.identifier.short_name }.join('/') end