Pregunta

Mantengo un par de aplicaciones Scala basadas en actores en este momento, y una pregunta que me encuentro haciendo todo el tiempo es ¿Quién envía ese mensaje?

Por ejemplo, encuentro la pieza de código que imprime el mensaje de miedo que encontré en los registros:

case ReportFailedUpdates(stuff) =>
  log("The horror! The horror! " + stuff)
  dieHorribly()

Y quiero averiguar cuál podría ser la causa. Si no estuviera usando actores, podría golpear Ctrl+Alt+H (al menos en eclipse) y descubra quién 'llamó' este 'método' (y quién llamó eso, y quién llamó que). Con actores, me encuentro buscando ! ReportFailedUpdates( Para encontrar qué actores envían este mensaje, luego buscando a los remitentes del mensaje que El actor estaba reaccionando a etc. (y generalmente dibujando el resultado en papel). Esto tiene dos desventajas:

  • Es más lento, ya que Eclipse está haciendo una búsqueda de texto sobre los (s) (s) de (potencialmente muchos) proyectos) y tengo que anotar cosas hacia abajo
  • No necesariamente encuentra todos los ocurrencias, ya que tal vez esto fue enviado con !?, o tal vez alguien puso dos espacios entre el ! y el ReportFailedUpdates, o, o ...

Lo que haría amor Es un soporte para herramientas que me permite averiguar de dónde podría haber venido un mensaje, aproximadamente el equivalente a una jerarquía de llamadas para el código no basado en el actor.

¿Hay alguna herramienta que lo haga? ¿Es esta una característica del Scalaide para Eclipse que no he descubierto? Si uso IntelliJ, ¿será mejor mi vida?

Actualizar

Mi ejemplo puede haber sido engañoso. No se trata solo de descubrir lo que salió mal cuando todo se cae, también me encuentro haciendo esto mucho cuando recojo un nuevo sistema y necesito descubrir cómo funciona. Parece que todavía no hay una herramienta para hacerlo. Supongo que tendré que pensar en cómo podría comenzar a extraer estáticamente (y tal vez visualizar) el gráfico de flujo de mensajes ...

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top