class RuboCop::ConfigObsoletion::ExtractedCop

Encapsulation of a ConfigObsoletion rule for splitting a cop's functionality into multiple new cops. @api private

Attributes

department[R]
gem[R]

Public Class Methods

new(config, old_name, gem) click to toggle source
Calls superclass method RuboCop::ConfigObsoletion::CopRule::new
# File lib/rubocop/config_obsoletion/extracted_cop.rb, line 11
def initialize(config, old_name, gem)
  super(config, old_name)
  @department, * = old_name.rpartition('/')
  @gem = gem
end

Public Instance Methods

rule_message() click to toggle source
# File lib/rubocop/config_obsoletion/extracted_cop.rb, line 23
def rule_message
  msg = '%<name>s been extracted to the `%<gem>s` gem.'
  format(msg,
         name: affected_cops.size > 1 ? "`#{department}` cops have" : "`#{old_name}` has",
         gem: gem)
end
violated?() click to toggle source
# File lib/rubocop/config_obsoletion/extracted_cop.rb, line 17
def violated?
  return false if feature_loaded?

  affected_cops.any?
end

Private Instance Methods

affected_cops() click to toggle source
# File lib/rubocop/config_obsoletion/extracted_cop.rb, line 32
def affected_cops
  return old_name unless old_name.end_with?('*')

  # Handle whole departments (expressed as `Department/*`)
  config.keys.select do |key|
    key == department || key.start_with?("#{department}/")
  end
end
feature_loaded?() click to toggle source
# File lib/rubocop/config_obsoletion/extracted_cop.rb, line 41
def feature_loaded?
  config.loaded_features.include?(gem)
end