class RuboCop::Cop::Style::EmptyMethod

end
def self.foo(bar)
end
def foo(bar)
# good
def self.foo(bar); end
def foo(bar); end
# bad
@example EnforcedStyle: expanded
def self.foo(bar); end
end
# baz
def foo(bar)
def foo(bar); end
# good
end
def self.foo(bar)
end
def foo(bar)
# bad
@example EnforcedStyle: compact (default)
comments.
Note: A method definition is not considered empty if it contains
to go on its own line (expanded style).
line (compact style), but it can be configured to enforce the ‘end`
By default it enforces empty method definitions to go on a single
This cop checks for the formatting of empty method definitions.

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.source_range, corrected(node))
  end
end

def comment_lines?(node)

def comment_lines?(node)
  processed_source[line_range(node)].any? { |line| comment_line?(line) }
end

def compact?(node)

def compact?(node)
  node.single_line?
end

def compact_style?

def compact_style?
  style == :compact
end

def correct_style?(node)

def correct_style?(node)
  compact_style? && compact?(node) ||
    expanded_style? && expanded?(node)
end

def corrected(node)

def corrected(node)
  arguments = node.arguments? ? node.arguments.source : ''
  scope     = node.receiver ? "#{node.receiver.source}." : ''
  signature = [scope, node.method_name, arguments].join
  ["def #{signature}", 'end'].join(joint(node))
end

def expanded?(node)

def expanded?(node)
  node.multiline?
end

def expanded_style?

def expanded_style?
  style == :expanded
end

def joint(node)

def joint(node)
  indent = ' ' * node.loc.column
  compact_style? ? '; ' : "\n#{indent}"
end

def message(_node)

def message(_node)
  compact_style? ? MSG_COMPACT : MSG_EXPANDED
end

def on_def(node)

def on_def(node)
  return if node.body || comment_lines?(node)
  return if correct_style?(node)
  add_offense(node)
end