class RuboCop::Cop::Lint::NumberConversion

Complex(‘10’)
Float(‘10.2’)
Integer(‘10’, 10)
# good
’10’.to_c
’10.2’.to_f
’10’.to_i
# bad
@example
fails. Cop prefer parsing with number class instead.
number conversion can cause unexpected error if auto type conversion
This cop warns the usage of unsafe number conversions. Unsafe

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.loc.expression,
                      correct_method(node, node.receiver))
  end
end

def correct_method(node, receiver)

def correct_method(node, receiver)
  format(CONVERSION_METHOD_CLASS_MAPPING[node.method_name],
         number_object: receiver.source)
end

def date_time_object?(node)

def date_time_object?(node)
  child = node
  while child&.send_type?
    return true if datetime? child
    child = child.children[0]
  end
end

def on_send(node)

def on_send(node)
  to_method(node) do |receiver, to_method|
    next if receiver.nil? || date_time_object?(receiver)
    message = format(
      MSG,
      number_object: receiver.source,
      to_method: to_method,
      corrected_method: correct_method(node, receiver)
    )
    add_offense(node, message: message)
  end
end