Class: RuboCop::Cop::Style::NonNilCheck
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/style/non_nil_check.rb
Overview
Checks for non-nil checks, which are usually redundant.
With IncludeSemanticChanges
set to false
by default, this cop
does not report offenses for !x.nil?
and does no changes that might
change behavior.
Also IncludeSemanticChanges
set to false
with EnforcedStyle: comparison
of
Style/NilComparison
cop, this cop does not report offenses for x != nil
and
does no changes to !x.nil?
style.
With IncludeSemanticChanges
set to true
, this cop reports offenses
for !x.nil?
and autocorrects that and x != nil
to solely x
, which
is usually OK, but might change behavior.
Constant Summary collapse
- MSG_FOR_REPLACEMENT =
'Prefer `%<prefer>s` over `%<current>s`.'
- MSG_FOR_REDUNDANCY =
'Explicit non-nil checks are usually redundant.'
- RESTRICT_ON_SEND =
%i[!= nil? !].freeze
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #nil_check?(node) ⇒ Object
- #not_and_nil_check?(node) ⇒ Object
- #not_equal_to_nil?(node) ⇒ Object
- #on_def(node) ⇒ Object (also: #on_defs)
- #on_send(node) ⇒ Object
- #unless_check?(node) ⇒ Object
Methods included from AutoCorrector
Methods inherited from Base
#active_support_extensions_enabled?, #add_global_offense, #add_offense, autocorrect_incompatible_with, badge, #begin_investigation, callbacks_needed, #callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #ready, #relevant_file?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#nil_check?(node) ⇒ Object
59 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 59 def_node_matcher :nil_check?, '(send _ :nil?)' |
#not_and_nil_check?(node) ⇒ Object
62 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 62 def_node_matcher :not_and_nil_check?, '(send (send _ :nil?) :!)' |
#not_equal_to_nil?(node) ⇒ Object
53 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 53 def_node_matcher :not_equal_to_nil?, '(send _ :!= nil)' |
#on_def(node) ⇒ Object Also known as: on_defs
73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 73 def on_def(node) body = node.body return unless node.predicate_method? && body if body.begin_type? ignore_node(body.children.last) else ignore_node(body) end end |
#on_send(node) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 64 def on_send(node) return if ignored_node?(node) || (!include_semantic_changes? && nil_comparison_style == 'comparison') return unless register_offense?(node) = (node) add_offense(node, message: ) { |corrector| autocorrect(corrector, node) } end |
#unless_check?(node) ⇒ Object
56 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 56 def_node_matcher :unless_check?, '(if (send _ :nil?) ...)' |