class RuboCop::Cop::Style::RaiseArgs
This cop checks the args passed to `fail` and `raise`.
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/style/raise_args.rb, line 10 def on_send(node) return unless node.command?(:raise) || node.command?(:fail) case style when :compact check_compact(node) when :exploded check_exploded(node) end end
Private Instance Methods
check_compact(node)
click to toggle source
# File lib/rubocop/cop/style/raise_args.rb, line 23 def check_compact(node) _receiver, selector, *args = *node if args.size > 1 add_offense(node, :expression, message(selector)) do opposite_style_detected end else correct_style_detected end end
check_exploded(node)
click to toggle source
# File lib/rubocop/cop/style/raise_args.rb, line 35 def check_exploded(node) _receiver, selector, *args = *node if args.size == 1 arg, = *args if arg.type == :send && arg.loc.selector.is?('new') _receiver, _selector, *constructor_args = *arg # Allow code like `raise Ex.new(arg1, arg2)`. if constructor_args.size <= 1 add_offense(node, :expression, message(selector)) do opposite_style_detected end end end else correct_style_detected end end
message(method)
click to toggle source
# File lib/rubocop/cop/style/raise_args.rb, line 56 def message(method) case style when :compact "Provide an exception object as an argument to `#{method}`." when :exploded 'Provide an exception class and message as ' "arguments to `#{method}`." end end