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.'
Instance Attribute Summary
Attributes inherited from Cop
#autocorrect, #corrections, #debug, #disabled_lines, #offences
Instance Method Summary collapse
-
#initialize ⇒ 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_action, cop_name, cop_type, #do_autocorrect, #ignore_node, inherited, lint?, #name, rails?, style?
Constructor Details
#initialize ⇒ RedundantSelf
Returns a new instance of RedundantSelf.
16 17 18 19 20 |
# File 'lib/rubocop/cop/style/redundant_self.rb', line 16 def initialize super @allowed_send_nodes = [] @local_variables = [] end |
Instance Method Details
#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) add_offence(:convention, receiver.loc.expression, MSG) end end end |