Class: RuboCop::Cop::Style::ItAssignment

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/style/it_assignment.rb

Overview

Checks for assignments to a local it variable inside a block where it can refer to the first anonymous parameter as of Ruby 3.4.

Although Ruby allows reassigning it in these cases, it could cause confusion if it is used as a block parameter elsewhere. For consistency, this also applies to numblocks and blocks with parameters, even though it cannot be used in those cases.

Examples:

# bad
foo { it = 5 }
foo { |bar| it = bar }
foo { it = _2 }

# good - use a different variable name
foo { var = 5 }
foo { |bar| var = bar }
foo { bar = _2 }

Constant Summary collapse

MSG =
'`it` is the default block parameter; consider another name.'

Constants inherited from Base

Base::RESTRICT_ON_SEND

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Instance Method Summary collapse

Methods inherited from Base

#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, #cop_name, cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_gem_version, #target_rails_version, #target_ruby_version

Methods included from ExcludeLimit

#exclude_limit

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

silence_warnings

Constructor Details

This class inherits a constructor from RuboCop::Cop::Base

Instance Method Details

#on_lvasgn(node) ⇒ Object



27
28
29
30
31
32
# File 'lib/rubocop/cop/style/it_assignment.rb', line 27

def on_lvasgn(node)
  return unless node.name == :it
  return unless node.each_ancestor(:any_block).any?

  add_offense(node.loc.name)
end