class RuboCop::Cop::Style::RedundantException
Checks for RuntimeError as the argument of raise/fail.
@example
# bad raise RuntimeError, 'message' raise RuntimeError.new('message') # good raise 'message' # bad - message is not a string raise RuntimeError, Object.new raise RuntimeError.new(Object.new) # good raise Object.new.to_s
Constants
- MSG_1
- MSG_2
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
Switch ‘raise RuntimeError, ’message’‘ to `raise ’message’‘, and `raise RuntimeError.new(’message’)‘ to `raise ’message’‘.
# File lib/rubocop/cop/style/redundant_exception.rb, line 33 def on_send(node) fix_exploded(node) || fix_compact(node) end
Private Instance Methods
fix_compact(node)
click to toggle source
# File lib/rubocop/cop/style/redundant_exception.rb, line 57 def fix_compact(node) compact?(node) do |new_call, message| add_offense(node, message: MSG_2) do |corrector| corrector.replace(new_call, replaced_compact(message)) end end end
fix_exploded(node)
click to toggle source
# File lib/rubocop/cop/style/redundant_exception.rb, line 39 def fix_exploded(node) exploded?(node) do |command, message| add_offense(node, message: MSG_1) do |corrector| corrector.replace(node, replaced_exploded(node, command, message)) end end end
replaced_compact(message)
click to toggle source
# File lib/rubocop/cop/style/redundant_exception.rb, line 65 def replaced_compact(message) if string_message?(message) message.source else "#{message.source}.to_s" end end
replaced_exploded(node, command, message)
click to toggle source
# File lib/rubocop/cop/style/redundant_exception.rb, line 47 def replaced_exploded(node, command, message) arg = string_message?(message) ? message.source : "#{message.source}.to_s" arg = node.parenthesized? ? "(#{arg})" : " #{arg}" "#{command}#{arg}" end
string_message?(message)
click to toggle source
# File lib/rubocop/cop/style/redundant_exception.rb, line 53 def string_message?(message) message.str_type? || message.dstr_type? || message.xstr_type? end