Class: RuboCop::Cop::Style::MultilineMethodDefinitionBraceLayout

Inherits:
Cop
  • Object
show all
Includes:
MultilineLiteralBraceLayout, OnMethodDef
Defined in:
lib/rubocop/cop/style/multiline_method_definition_brace_layout.rb

Overview

This cop checks that the closing brace in a method definition is symmetrical with respect to the opening brace and the method parameters.

If a method definition’s opening brace is on the same line as the first parameter of the definition, then the closing brace should be on the same line as the last parameter of the definition.

If a method definition’s opening brace is on a separate line from the first parameter of the definition, then the closing brace should be on the line after the last parameter of the definition.

Examples:


# bad
def foo(a,
  b
  )
end

# bad
def foo(
  a,
  b)
end

# good
def foo(a,
  b)
end

#good
def foo(
  a,
  b
)
end

Constant Summary collapse

SAME_LINE_MESSAGE =
'Closing method definition brace must be on the ' \
'same line as the last parameter when opening brace is on the same ' \
'line as the first parameter.'.freeze
NEW_LINE_MESSAGE =
'Closing method definition brace must be on the ' \
'line after the last parameter when opening brace is on a separate ' \
'line from the first parameter.'.freeze

Constants included from Util

Util::ASGN_NODES, Util::BYTE_ORDER_MARK, Util::EQUALS_ASGN_NODES, Util::LITERAL_REGEX, Util::OPERATOR_METHODS, Util::SHORTHAND_ASGN_NODES, Util::STRING_ESCAPES, Util::STRING_ESCAPE_REGEX

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offenses, #processed_source

Instance Method Summary collapse

Methods included from MultilineLiteralBraceLayout

#autocorrect, #check_brace_layout

Methods included from OnMethodDef

#on_def, #on_defs

Methods inherited from Cop

#add_offense, all, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, cop_type, #correct, #debug?, #details, #display_cop_names?, #display_style_guide?, #excluded_file?, #extra_details?, inherited, #initialize, #join_force?, lint?, match?, #message, non_rails, #parse, qualified_cop_name, #reference_url, #relevant_file?, #style_guide_url, #target_ruby_version

Methods included from Sexp

#s

Methods included from NodePattern::Macros

#def_node_matcher, #def_node_search, #node_search_body

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #support_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

begins_its_line?, block_length, comment_line?, directions, double_quotes_acceptable?, double_quotes_required?, effective_column, ends_its_line?, first_part_of_call_chain, interpret_string_escapes, line_range, move_pos, numeric_range_size, on_node, operator?, parentheses?, range_with_surrounding_comma, range_with_surrounding_space, source_range, strip_quotes, to_string_literal, to_symbol_literal, within_node?

Methods included from PathUtil

absolute?, hidden?, issue_deprecation_warning, match_path?, relative_path

Constructor Details

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

Instance Method Details

#on_method_def(_node, _method_name, args, _body) ⇒ Object



56
57
58
# File 'lib/rubocop/cop/style/multiline_method_definition_brace_layout.rb', line 56

def on_method_def(_node, _method_name, args, _body)
  check_brace_layout(args)
end