class RuboCop::Cop::MessageAnnotator

#=> ‘Cop/CopName: message (example.org/styleguide)’
).annotate(‘message’)
config, cop_name, cop_config, @options
RuboCop::Cop::MessageAnnotator.new(
@example
@see #initialize
based on params passed into initializer.
Message Annotator class annotates a basic offense message

def annotate(message)

Returns:
  • (String) - annotated message
def annotate(message)
  message = "#{cop_name}: #{message}" if display_cop_names?
  message += " #{details}" if extra_details? && details
  if display_style_guide?
    links = urls.join(', ')
    message = "#{message} (#{links})"
  end
  message
end

def debug?

def debug?
  options[:debug]
end

def details

def details
  details = cop_config && cop_config['Details']
  details.nil? || details.empty? ? nil : details
end

def display_cop_names?

def display_cop_names?
  return true if debug?
  return false if options[:display_cop_names] == false
  return true if options[:display_cop_names]
  return false if options[:format] == 'json'
  config.for_all_cops['DisplayCopNames']
end

def display_style_guide?

def display_style_guide?
  (options[:display_style_guide] ||
   config.for_all_cops['DisplayStyleGuide']) &&
    !urls.empty?
end

def extra_details?

def extra_details?
  options[:extra_details] || config.for_all_cops['ExtraDetails']
end

def initialize(config, cop_name, cop_config, options)

Options Hash: (**options)
  • :display_cop_names (Boolean) --
  • :debug (Boolean) --
  • :extra_details (Boolean) --
  • :display_style_guide (Boolean) --
  • :Details (String) --
  • :Reference (String) -- Full reference URL
  • :StyleGuide (String) -- Extension of base styleguide URL

Parameters:
  • options (Hash, nil) -- optional
  • cop_config (Hash) -- configs for specific cop, from config#for_cop
  • cop_name (String) -- for specific cop name
  • config (RuboCop::Config) -- Check configs for all cops

Other tags:
    Note: - Message Annotator specifically checks the
def initialize(config, cop_name, cop_config, options)
  @config = config
  @cop_name = cop_name
  @cop_config = cop_config || {}
  @options = options
end

def reference_urls

def reference_urls
  urls = Array(cop_config['Reference'])
  urls.nil? || urls.empty? ? nil : urls.reject(&:empty?)
end

def style_guide_base_url

def style_guide_base_url
  department_name = cop_name.split('/').first
  config.for_department(department_name)['StyleGuideBaseURL'] ||
    config.for_all_cops['StyleGuideBaseURL']
end

def style_guide_url

def style_guide_url
  url = cop_config['StyleGuide']
  return nil if url.nil? || url.empty?
  self.class.style_guide_urls[url] ||= begin
    base_url = style_guide_base_url
    if base_url.nil? || base_url.empty?
      url
    else
      URI.join(base_url, url).to_s
    end
  end
end

def urls

def urls
  [style_guide_url, *reference_urls].compact
end