class RuboCop::Cop::Style::ClassMethods

This cop checks for uses of the class/module name instead of self, when defining class/module methods.

@example

# bad
class SomeClass
  def SomeClass.class_method
    # ...
  end
end

# good
class SomeClass
  def self.class_method
    # ...
  end
end

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 39
def autocorrect(node)
  ->(corrector) { corrector.replace(node.loc.name, 'self') }
end
on_class(node) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 26
def on_class(node)
  return unless node.body

  if node.body.defs_type?
    check_defs(node.identifier, node.body)
  elsif node.body.begin_type?
    node.body.each_child_node(:defs) do |def_node|
      check_defs(node.identifier, def_node)
    end
  end
end
Also aliased as: on_module
on_module(node)
Alias for: on_class

Private Instance Methods

check_defs(name, node) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 45
def check_defs(name, node)
  # check if the class/module name matches the definee for the defs node
  return unless name == node.receiver

  add_offense(node.receiver, location: :name)
end
message(node) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 52
def message(node)
  _, class_name = *node

  format(MSG, method: node.parent.method_name, class: class_name)
end