Sha256: f8ca84a6fc7c615cbbf64dd653951cba15851ab7ad3ad05b0430639d2e688a10
Contents?: true
Size: 1.95 KB
Versions: 2
Compression:
Stored size: 1.95 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # 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 # class NilComparison < Base include ConfigurableEnforcedStyle extend AutoCorrector PREDICATE_MSG = 'Prefer the use of the `nil?` predicate.' EXPLICIT_MSG = 'Prefer the use of the `==` comparison.' RESTRICT_ON_SEND = %i[== === nil?].freeze def_node_matcher :nil_comparison?, '(send _ {:== :===} nil)' def_node_matcher :nil_check?, '(send _ :nil?)' def on_send(node) style_check?(node) do add_offense(node.loc.selector) do |corrector| new_code = if prefer_comparison? node.source.sub('.nil?', ' == nil') else node.source.sub(/\s*={2,3}\s*nil/, '.nil?') end corrector.replace(node, new_code) parent = node.parent corrector.wrap(node, '(', ')') if parent.respond_to?(:method?) && parent.method?(:!) end end end private def message(_node) prefer_comparison? ? EXPLICIT_MSG : PREDICATE_MSG end def style_check?(node, &block) if prefer_comparison? nil_check?(node, &block) else nil_comparison?(node, &block) end end def prefer_comparison? style == :comparison end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubocop-1.10.0 | lib/rubocop/cop/style/nil_comparison.rb |
rubocop-1.9.1 | lib/rubocop/cop/style/nil_comparison.rb |