Class: RuboCop::Cop::Style::RedundantException

Inherits:
Cop
  • Object
show all
Defined in:
lib/rubocop/cop/style/redundant_exception.rb

Overview

This cop checks for RuntimeError as the argument of raise/fail.

It checks for code like this:

Examples:

# Bad
raise RuntimeError, 'message'

# Bad
raise RuntimeError.new('message')

# Good
raise 'message'

Constant Summary collapse

MSG_1 =
'Redundant `RuntimeError` argument can be removed.'
MSG_2 =
'Redundant `RuntimeError.new` call can be replaced with ' \
'just the message.'

Constants included from Util

Util::LITERAL_REGEX

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offenses, #processed_source

Instance Method Summary collapse

Methods inherited from Cop

#add_offense, all, autocorrect_incompatible_with, badge, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, #correct, department, #disable_uncorrectable, #duplicate_location?, #excluded_file?, #external_dependency_checksum, #find_location, #highlights, inherited, #initialize, #join_force?, lint?, match?, #message, #messages, #parse, qualified_cop_name, #reason_to_not_correct, #relevant_file?, #target_rails_version, #target_ruby_version

Methods included from AST::Sexp

#s

Methods included from NodePattern::Macros

#def_node_matcher, #def_node_search, #node_search, #node_search_all, #node_search_body, #node_search_first

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_offense, #disable_uncorrectable?, #safe_autocorrect?, #support_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

begins_its_line?, comment_line?, double_quotes_required?, escape_string, first_part_of_call_chain, interpret_string_escapes, line_range, needs_escaping?, on_node, parentheses?, same_line?, to_string_literal, to_supported_styles, tokens, trim_string_interporation_escape_character

Methods included from PathUtil

absolute?, chdir, hidden_dir?, hidden_file_in_not_hidden_dir?, match_path?, pwd, relative_path, reset_pwd, smart_path

Constructor Details

This class inherits a constructor from RuboCop::Cop::Cop

Instance Method Details

#autocorrect(node) ⇒ Object

Switch raise RuntimeError, 'message' to raise 'message', and raise RuntimeError.new('message') to raise 'message'.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rubocop/cop/style/redundant_exception.rb', line 31

def autocorrect(node) # rubocop:disable Metrics/MethodLength
  exploded?(node) do |command, message|
    return lambda do |corrector|
      if node.parenthesized?
        corrector.replace(node,
                          "#{command}(#{message.source})")
      else
        corrector.replace(node,
                          "#{command} #{message.source}")
      end
    end
  end
  compact?(node) do |new_call, message|
    lambda do |corrector|
      corrector.replace(new_call, message.source)
    end
  end
end

#on_send(node) ⇒ Object



24
25
26
27
# File 'lib/rubocop/cop/style/redundant_exception.rb', line 24

def on_send(node)
  exploded?(node) { return add_offense(node, message: MSG_1) }
  compact?(node) { add_offense(node, message: MSG_2) }
end