class RuboCop::Cop::Layout::DefEndAlignment

end
private def foo
# good
end
private def foo
# bad
@example EnforcedStyleAlignWith: def
end
private def foo
# good
end
private def foo
# bad
@example EnforcedStyleAlignWith: start_of_line (default)
‘def` keyword.
keyword is. If it’s set to ‘def`, the `end` shall be aligned with the
`end` shall be aligned with the start of the line where the `def`
parameter. If it’s set to ‘start_of_line` (which is the default), the
Two modes are supported through the EnforcedStyleAlignWith configuration
aligned properly.
This cop checks whether the end keywords of method definitions are

def autocorrect(corrector, node)

def autocorrect(corrector, node)
  if style == :start_of_line && node.parent && node.parent.send_type?
    AlignmentCorrector.align_end(corrector, processed_source, node, node.parent)
  else
    AlignmentCorrector.align_end(corrector, processed_source, node, node)
  end
end

def on_def(node)

def on_def(node)
  check_end_kw_in_node(node)
end

def on_send(node)

def on_send(node)
  return unless node.def_modifier?
  method_def = node.each_descendant(:def, :defs).first
  expr = node.source_range
  line_start = range_between(expr.begin_pos, method_def.loc.keyword.end_pos)
  align_with = { def: method_def.loc.keyword, start_of_line: line_start }
  check_end_kw_alignment(method_def, align_with)
  ignore_node(method_def) # Don't check the same `end` again.
end