class RuboCop::Cop::Lint::UselessMethodDefinition
Checks for useless method definitions, specifically: empty constructors and methods just delegating to ‘super`.
@safety
This cop is unsafe as it can register false positives for cases when an empty constructor just overrides the parent constructor, which is bad anyway.
@example
# bad def initialize super end def method super end # good - with default arguments def initialize(x = Object.new) super end # good def initialize super initialize_internals end def method(*args) super(:extra_arg, *args) end
Constants
- MSG
Public Instance Methods
on_def(node)
click to toggle source
# File lib/rubocop/cop/lint/useless_method_definition.rb, line 43 def on_def(node) return if optional_args?(node) return unless delegating?(node.body, node) add_offense(node) { |corrector| corrector.remove(node) } end
Also aliased as: on_defs
Private Instance Methods
delegating?(node, def_node)
click to toggle source
# File lib/rubocop/cop/lint/useless_method_definition.rb, line 57 def delegating?(node, def_node) if node&.zsuper_type? true elsif node&.super_type? node.arguments.map(&:source) == def_node.arguments.map(&:source) else false end end
optional_args?(node)
click to toggle source
# File lib/rubocop/cop/lint/useless_method_definition.rb, line 53 def optional_args?(node) node.arguments.any? { |arg| arg.optarg_type? || arg.kwoptarg_type? } end