Class: RuboCop::Cop::Style::NonNilCheck
- Defined in:
- lib/rubocop/cop/style/non_nil_check.rb
Overview
This cop 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.
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
Constants included from Util
Instance Attribute Summary
Attributes inherited from Cop
#config, #corrections, #offenses, #processed_source
Instance Method Summary collapse
- #autocorrect(node) ⇒ Object
- #on_def(node) ⇒ Object (also: #on_defs)
- #on_send(node) ⇒ Object
Methods inherited from Cop
#add_offense, all, autocorrect_incompatible_with, badge, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, #correct, department, #disable_uncorrectable, #duplicate_location?, #excluded_file?, #external_dependency_checksum, #find_location, #highlights, inherited, #initialize, #join_force?, lint?, match?, #messages, #parse, qualified_cop_name, #reason_to_not_correct, #relevant_file?, #target_rails_version, #target_ruby_version
Methods included from AST::Sexp
Methods included from NodePattern::Macros
#def_node_matcher, #def_node_search, #node_search, #node_search_all, #node_search_body, #node_search_first
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_offense, #disable_uncorrectable?, #safe_autocorrect?, #support_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
begins_its_line?, comment_line?, double_quotes_required?, escape_string, first_part_of_call_chain, interpret_string_escapes, line_range, needs_escaping?, on_node, parentheses?, same_line?, to_string_literal, to_supported_styles, tokens, trim_string_interporation_escape_character
Methods included from PathUtil
absolute?, chdir, hidden_dir?, hidden_file_in_not_hidden_dir?, match_path?, pwd, relative_path, reset_pwd, smart_path
Constructor Details
This class inherits a constructor from RuboCop::Cop::Cop
Instance Method Details
#autocorrect(node) ⇒ Object
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 71 def autocorrect(node) case node.method_name when :!= autocorrect_comparison(node) when :! autocorrect_non_nil(node, node.receiver) when :nil? autocorrect_unless_nil(node, node.receiver) end end |
#on_def(node) ⇒ Object Also known as: on_defs
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 58 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
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rubocop/cop/style/non_nil_check.rb', line 47 def on_send(node) return if ignored_node?(node) if not_equal_to_nil?(node) add_offense(node, location: :selector) elsif include_semantic_changes? && (not_and_nil_check?(node) || unless_and_nil_check?(node)) add_offense(node) end end |