Parent

Files

Class/Module Index [+]

Quicksearch

RuboCop::Cop::Style::RedundantSelf

This cop checks for redundant uses of `self`.

`self` is only needed when:

Special cases:

We allow uses of `self` with operators because it would be awkward otherwise.

Constants

MSG

Public Class Methods

new(config = nil, options = nil) click to toggle source
# File lib/rubocop/cop/style/redundant_self.rb, line 47
def initialize(config = nil, options = nil)
  super
  @allowed_send_nodes = []
  @local_variables = []
end

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/redundant_self.rb, line 103
def autocorrect(node)
  receiver, _method_name, *_args = *node
  @corrections << lambda do |corrector|
    corrector.remove(receiver.loc.expression)
    corrector.remove(node.loc.dot)
  end
end
on_and_asgn(node) click to toggle source
Alias for: on_or_asgn
on_args(node) click to toggle source
# File lib/rubocop/cop/style/redundant_self.rb, line 77
def on_args(node)
  node.children.each { |arg| on_argument(arg) }
end
on_blockarg(node) click to toggle source
# File lib/rubocop/cop/style/redundant_self.rb, line 81
def on_blockarg(node)
  on_argument(node)
end
on_def(_node) click to toggle source

Using self.x to distinguish from local variable x

# File lib/rubocop/cop/style/redundant_self.rb, line 69
def on_def(_node)
  @local_variables = []
end
on_defs(_node) click to toggle source
# File lib/rubocop/cop/style/redundant_self.rb, line 73
def on_defs(_node)
  @local_variables = []
end
on_lvasgn(node) click to toggle source
# File lib/rubocop/cop/style/redundant_self.rb, line 85
def on_lvasgn(node)
  lhs, _rhs = *node
  @local_variables << lhs
end
on_op_asgn(node) click to toggle source
# File lib/rubocop/cop/style/redundant_self.rb, line 62
def on_op_asgn(node)
  lhs, _op, _rhs = *node
  allow_self(lhs)
end
on_or_asgn(node) click to toggle source

Assignment of self.x

# File lib/rubocop/cop/style/redundant_self.rb, line 55
def on_or_asgn(node)
  lhs, _rhs = *node
  allow_self(lhs)
end
Also aliased as: on_and_asgn
on_send(node) click to toggle source

Detect offenses

# File lib/rubocop/cop/style/redundant_self.rb, line 92
def on_send(node)
  receiver, method_name, *_args = *node
  return unless receiver && receiver.type == :self
  return if operator?(method_name) || keyword?(method_name) ||
    constant_name?(method_name) ||
    @allowed_send_nodes.include?(node) ||
    @local_variables.include?(method_name)

  add_offense(node, :expression)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.