class RuboCop::Cop::Style::NilComparison

This cop checks for comparison of something with nil using `==` and `nil?`.

Supported styles are: predicate, comparison.

@example EnforcedStyle: predicate (default)

# bad
if x == nil
end

# good
if x.nil?
end

@example EnforcedStyle: comparison

# bad
if x.nil?
end

# good
if x == nil
end

Constants

EXPLICIT_MSG
PREDICATE_MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/nil_comparison.rb, line 46
def autocorrect(node)
  new_code = if prefer_comparison?
               node.source.sub('.nil?', ' == nil')
             else
               node.source.sub(/\s*={2,3}\s*nil/, '.nil?')
             end
  ->(corrector) { corrector.replace(node.source_range, new_code) }
end
on_send(node) click to toggle source
# File lib/rubocop/cop/style/nil_comparison.rb, line 40
def on_send(node)
  style_check?(node) do
    add_offense(node, location: :selector)
  end
end

Private Instance Methods

message(_node) click to toggle source
# File lib/rubocop/cop/style/nil_comparison.rb, line 57
def message(_node)
  prefer_comparison? ? EXPLICIT_MSG : PREDICATE_MSG
end
prefer_comparison?() click to toggle source
# File lib/rubocop/cop/style/nil_comparison.rb, line 69
def prefer_comparison?
  style == :comparison
end
style_check?(node, &block) click to toggle source
# File lib/rubocop/cop/style/nil_comparison.rb, line 61
def style_check?(node, &block)
  if prefer_comparison?
    nil_check?(node, &block)
  else
    nil_comparison?(node, &block)
  end
end