Class: RuboCop::Cop::Lint::EndAlignment

Inherits:
Cop
  • Object
show all
Includes:
CheckAssignment, EndKeywordAlignment, IfNode
Defined in:
lib/rubocop/cop/lint/end_alignment.rb

Overview

This cop checks whether the end keywords are aligned properly.

Three modes are supported through the AlignWith configuration parameter:

If it's set to keyword (which is the default), the end shall be aligned with the start of the keyword (if, class, etc.).

If it's set to variable the end shall be aligned with the left-hand-side of the variable assignment, if there is one.

If it's set to start_of_line, the end shall be aligned with the start of the line where the matching keyword appears.

Examples:

@good
# keyword style
variable = if true
           end

# variable style
variable = if true
end

# start_of_line style
puts(if true
end)

Constant Summary

Constants included from EndKeywordAlignment

EndKeywordAlignment::MSG

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 IfNode

#elsif?, #if_else?, #if_node_parts, #modifier_if?, #ternary_op?

Methods included from ConfigurableEnforcedStyle

#alternative_style, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #parameter_name, #style, #style_detected, #supported_styles, #unexpected_style_detected

Methods included from CheckAssignment

extract_rhs, #on_send

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_case(node) ⇒ Object



59
60
61
62
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 59

def on_case(node)
  return check_asgn_alignment(node.parent, node) if argument_case?(node)
  check_other_alignment(node)
end

#on_class(node) ⇒ Object



39
40
41
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 39

def on_class(node)
  check_other_alignment(node)
end

#on_if(node) ⇒ Object



47
48
49
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 47

def on_if(node)
  check_other_alignment(node) unless ternary_op?(node)
end

#on_module(node) ⇒ Object



43
44
45
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 43

def on_module(node)
  check_other_alignment(node)
end

#on_until(node) ⇒ Object



55
56
57
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 55

def on_until(node)
  check_other_alignment(node)
end

#on_while(node) ⇒ Object



51
52
53
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 51

def on_while(node)
  check_other_alignment(node)
end