class Spoom::Deadcode::Plugins::ActiveRecord
def on_send(send)
@override
def on_send(send) if send.recv.nil? && CALLBACKS.include?(send.name) # Process direct symbol arguments send.each_arg(Prism::SymbolNode) do |arg| @index.reference_method(arg.unescaped, send.location) end # Process hash arguments for conditions like if: :method_name send.each_arg_assoc do |key, value| key = key.slice.delete_suffix(":") case key when *CALLBACK_CONDITIONS if value&.is_a?(Prism::SymbolNode) @index.reference_method(value.unescaped, send.location) end end end return end return unless send.recv case send.name when *CRUD_METHODS send.each_arg_assoc do |key, _value| key = key.slice.delete_suffix(":") @index.reference_method("#{key}=", send.location) end when *ARRAY_METHODS send.each_arg(Prism::ArrayNode) do |arg| arg.elements.each do |part| next unless part.is_a?(Prism::HashNode) part.elements.each do |assoc| next unless assoc.is_a?(Prism::AssocNode) key = assoc.key.slice.delete_suffix(":") @index.reference_method("#{key}=", send.location) end end end end end