class RuboCop::Cop::Style::ClassCheck

Enforces consistent use of ‘Object#is_a?` or `Object#kind_of?`.

@example EnforcedStyle: is_a? (default)

# bad
var.kind_of?(Date)
var.kind_of?(Integer)

# good
var.is_a?(Date)
var.is_a?(Integer)

@example EnforcedStyle: kind_of?

# bad
var.is_a?(Time)
var.is_a?(String)

# good
var.kind_of?(Time)
var.kind_of?(String)

Constants

MSG
RESTRICT_ON_SEND

Public Instance Methods

message(node) click to toggle source
# File lib/rubocop/cop/style/class_check.rb, line 44
def message(node)
  if node.method?(:is_a?)
    format(MSG, prefer: 'kind_of?', current: 'is_a?')
  else
    format(MSG, prefer: 'is_a?', current: 'kind_of?')
  end
end
on_send(node) click to toggle source
# File lib/rubocop/cop/style/class_check.rb, line 33
def on_send(node)
  return if style == node.method_name

  message = message(node)
  add_offense(node.loc.selector, message: message) do |corrector|
    replacement = node.method?(:is_a?) ? 'kind_of?' : 'is_a?'

    corrector.replace(node.loc.selector, replacement)
  end
end