class RuboCop::Cop::Style::MultilineMethodSignature

This cop checks for method signatures that span multiple lines.

@example

# good

def foo(bar, baz)
end

# bad

def foo(bar,
        baz)
end

Constants

MSG

Public Instance Methods

on_def(node) click to toggle source
# File lib/rubocop/cop/style/multiline_method_signature.rb, line 24
def on_def(node)
  return unless node.arguments?
  return if opening_line(node) == closing_line(node)
  return if correction_exceeds_max_line_length?(node)

  add_offense(node)
end
Also aliased as: on_defs
on_defs(node)
Alias for: on_def

Private Instance Methods

closing_line(node) click to toggle source
# File lib/rubocop/cop/style/multiline_method_signature.rb, line 39
def closing_line(node)
  node.arguments.last_line
end
correction_exceeds_max_line_length?(node) click to toggle source
# File lib/rubocop/cop/style/multiline_method_signature.rb, line 43
def correction_exceeds_max_line_length?(node)
  indentation_width(node) + definition_width(node) > max_line_length
end
definition_width(node) click to toggle source
# File lib/rubocop/cop/style/multiline_method_signature.rb, line 51
def definition_width(node)
  node.source_range.begin.join(node.arguments.source_range.end).length
end
indentation_width(node) click to toggle source
# File lib/rubocop/cop/style/multiline_method_signature.rb, line 47
def indentation_width(node)
  processed_source.line_indentation(node.loc.expression.line)
end
max_line_length() click to toggle source
# File lib/rubocop/cop/style/multiline_method_signature.rb, line 55
def max_line_length
  config.for_cop('Metrics/LineLength')['Max'] || 80
end
opening_line(node) click to toggle source
# File lib/rubocop/cop/style/multiline_method_signature.rb, line 35
def opening_line(node)
  node.first_line
end