class RuboCop::Cop::Lint::UselessSetterCall
end
x.attr = 5
x = Something.new
def something
@example
expression of a function definition.
This cop checks for setter call to local variable as the final
def on_method_def(_node, _method_name, _args, body)
def on_method_def(_node, _method_name, _args, body) return unless body if body.type == :begin expression = body.children else expression = 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
def setter_call_to_local_variable?(node)
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