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

Inherits:
Cop
  • Object
show all
Includes:
CheckAssignment, EndKeywordAlignment
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 EnforcedStyleAlignWith 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:


# bad

variable = if true
    end

# EnforcedStyleAlignWith: keyword (default)

# good

variable = if true
           end

# EnforcedStyleAlignWith: variable

# good

variable = if true
end

# EnforcedStyleAlignWith: start_of_line

# good

puts(if true
end)

Constant Summary

Constants included from EndKeywordAlignment

EndKeywordAlignment::MSG

Constants included from Util

Util::ASGN_NODES, Util::BYTE_ORDER_MARK, Util::CONDITIONAL_NODES, Util::EQUALS_ASGN_NODES, Util::LITERAL_REGEX, Util::LOGICAL_OPERATOR_NODES, Util::MODIFIER_NODES, Util::OPERATOR_METHODS, Util::SHORTHAND_ASGN_NODES

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offenses, #processed_source

Instance Method Summary collapse

Methods included from ConfigurableEnforcedStyle

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

Methods included from CheckAssignment

extract_rhs, #on_send

Methods inherited from Cop

#add_offense, all, badge, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, #correct, department, #duplicate_location?, #excluded_file?, #find_location, #highlights, inherited, #initialize, #join_force?, lint?, match?, #message, #messages, non_rails, #parse, qualified_cop_name, #relevant_file?, #target_ruby_version

Methods included from AST::Sexp

#s

Methods included from NodePattern::Macros

#def_node_matcher, #def_node_search, #node_search, #node_search_all, #node_search_body, #node_search_first

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?, compatible_external_encoding_for?, directions, double_quotes_acceptable?, double_quotes_required?, effective_column, ends_its_line?, escape_string, first_part_of_call_chain, hard_to_type?, interpret_string_escapes, line_distance, line_range, move_pos, needs_escaping?, numeric_range_size, on_node, operator?, parentheses?, parenthesized_call?, preceed?, range_between, range_with_surrounding_comma, range_with_surrounding_space, same_line?, source_range, strip_quotes, stripped_source_upto, to_string_literal, to_supported_styles, to_symbol_literal, within_node?

Methods included from PathUtil

absolute?, match_path?, relative_path

Constructor Details

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

Instance Method Details

#on_case(node) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 77

def on_case(node)
  if node.argument?
    check_asgn_alignment(node.parent, node)
  else
    check_other_alignment(node)
  end
end

#on_class(node) ⇒ Object



57
58
59
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 57

def on_class(node)
  check_other_alignment(node)
end

#on_if(node) ⇒ Object



65
66
67
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 65

def on_if(node)
  check_other_alignment(node) unless node.ternary?
end

#on_module(node) ⇒ Object



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

def on_module(node)
  check_other_alignment(node)
end

#on_until(node) ⇒ Object



73
74
75
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 73

def on_until(node)
  check_other_alignment(node)
end

#on_while(node) ⇒ Object



69
70
71
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 69

def on_while(node)
  check_other_alignment(node)
end