class RuboCop::Cop::Lint::EmptyClass


end
# TODO: implement later
class << obj
end
end
# TODO: implement later
class << self
class Bar
end
# TODO: implement later
class Foo
# good
@example AllowComments: true
end
# TODO: implement later
class << obj
end
end
# TODO: implement later
class << self
class Bar
end
# TODO: implement later
class Foo
# bad
@example AllowComments: false (default)
end
attr_reader :bar
class << obj
end
end
attr_reader :bar
class << self
class Bar
end
end
# … code
def do_something
class Foo
# good
end
class << obj
end
end
class << self
class Bar
end
class Foo
# bad
@example
to be clearer what we’re aiming for.
Such empty classes and metaclasses are typically an oversight or we should provide a comment
Checks for classes and metaclasses without a body.

def body_or_allowed_comment_lines?(node)

def body_or_allowed_comment_lines?(node)
  return true if node.body
  cop_config['AllowComments'] && processed_source.contains_comment?(node.source_range)
end

def on_class(node)

def on_class(node)
  add_offense(node, message: CLASS_MSG) unless body_or_allowed_comment_lines?(node) ||
                                               node.parent_class
end

def on_sclass(node)

def on_sclass(node)
  add_offense(node, message: METACLASS_MSG) unless body_or_allowed_comment_lines?(node)
end