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

on_class(node) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 25
def on_class(node)
  name, _superclass, body = *node
  check(name, body)
end
on_module(node) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 30
def on_module(node)
  name, body = *node
  check(name, body)
end

Private Instance Methods

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

  if node.defs_type?
    check_defs(name, node)
  elsif node.begin_type?
    node.each_child_node(:defs) { |n| check_defs(name, n) }
  end
end
check_defs(name, node) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 47
def check_defs(name, node)
  definee, method_name, _args, _body = *node
  # check if the class/module name matches the definee for the defs node
  return unless name == definee

  _, class_name = *definee
  add_offense(definee, location: :name,
                       message: message(class_name, method_name))
end
message(class_name, method_name) click to toggle source
# File lib/rubocop/cop/style/class_methods.rb, line 57
def message(class_name, method_name)
  format(MSG, method_name, class_name, method_name)
end