class RuboCop::Cop::Lint::UselessSetterCall
This cop checks for setter call to local variable as the final expression of a function definition.
@example
def something x = Something.new x.attr = 5 end
Constants
- ASSIGNMENT_TYPES
- MSG
Private Instance Methods
on_method_def(_node, _method_name, _args, body)
click to toggle source
# File lib/rubocop/cop/lint/useless_setter_call.rb, line 23 def on_method_def(_node, _method_name, _args, body) return unless body expression = if body.type == :begin body.children else body end last_expr = expression.is_a?(Array) ? expression.last : expression return unless setter_call_to_local_variable?(last_expr) tracker = MethodVariableTracker.new(body) receiver, = *last_expr variable_name, = *receiver return unless tracker.contain_local_object?(variable_name) add_offense(receiver, :name, format(MSG, receiver.loc.name.source)) end
setter_call_to_local_variable?(node)
click to toggle source
# File lib/rubocop/cop/lint/useless_setter_call.rb, line 46 def setter_call_to_local_variable?(node) return unless node && node.type == :send receiver, method, _args = *node return unless receiver && receiver.type == :lvar method =~ /(?:\w|\[\])=$/ end