Class: Rubocop::Cop::Style::RedundantSelf
- Defined in:
- lib/rubocop/cop/style/redundant_self.rb
Overview
This cop checks for redundant uses of self
. It is only needed when
calling a write accessor on self.
Special cases:
We allow uses of self
with operators because it would be awkward
otherwise.
Constant Summary collapse
- MSG =
'Redundant `self` detected.'
Constants inherited from Cop
Instance Attribute Summary
Attributes inherited from Cop
#config, #corrections, #offences, #processed_source
Instance Method Summary collapse
- #autocorrect_action(node) ⇒ Object
-
#initialize(config = nil, options = nil) ⇒ RedundantSelf
constructor
A new instance of RedundantSelf.
-
#on_def(node) ⇒ Object
Using self.x to distinguish from local variable x.
- #on_defs(node) ⇒ Object
- #on_lvasgn(node) ⇒ Object
- #on_op_asgn(node) ⇒ Object
-
#on_or_asgn(node) ⇒ Object
(also: #on_and_asgn)
Assignment of self.x.
-
#on_send(node) ⇒ Object
Detect offences.
Methods inherited from Cop
#add_offence, all, #autocorrect?, #convention, #cop_config, cop_name, #cop_name, cop_type, #debug?, #ignore_node, inherited, lint?, #message, rails?, style?, #warning
Constructor Details
#initialize(config = nil, options = nil) ⇒ RedundantSelf
Returns a new instance of RedundantSelf.
16 17 18 19 20 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 16 def initialize(config = nil, = nil) super @allowed_send_nodes = [] @local_variables = [] end |
Instance Method Details
#autocorrect_action(node) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 64 def autocorrect_action(node) @corrections << lambda do |corrector| corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/self\./, '')) end end |
#on_def(node) ⇒ Object
Using self.x to distinguish from local variable x
38 39 40 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 38 def on_def(node) @local_variables = [] end |
#on_defs(node) ⇒ Object
42 43 44 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 42 def on_defs(node) @local_variables = [] end |
#on_lvasgn(node) ⇒ Object
46 47 48 49 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 46 def on_lvasgn(node) lhs, _rhs = *node @local_variables << lhs end |
#on_op_asgn(node) ⇒ Object
31 32 33 34 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 31 def on_op_asgn(node) lhs, _op, _rhs = *node allow_self(lhs) end |
#on_or_asgn(node) ⇒ Object Also known as: on_and_asgn
Assignment of self.x
24 25 26 27 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 24 def on_or_asgn(node) lhs, _rhs = *node allow_self(lhs) end |
#on_send(node) ⇒ Object
Detect offences
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 53 def on_send(node) receiver, method_name, *_args = *node if receiver && receiver.type == :self unless operator?(method_name) || keyword?(method_name) || @allowed_send_nodes.include?(node) || @local_variables.include?(method_name) convention(node, :expression) end end end |