Domanda

Al momento sto mantenendo un paio di applicazioni Scala basate su attore e una domanda che mi ritrovo a fare tutto il tempo è Chi invia quel messaggio?

Ad esempio, trovo il pezzo di codice che stampa il messaggio spaventoso che ho trovato nei registri:

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

E voglio scoprire quale potrebbe essere la causa. Se non usassi gli attori, potrei colpire Ctrl+Alt+H (almeno in Eclipse) e scopri chi "ha chiamato" questo "metodo" (e chi lo ha chiamato, e chi ha chiamato Quello). Con gli attori, mi ritrovo a cercare ! ReportFailedUpdates( Per trovare quali attori inviano questo messaggio, quindi alla ricerca dei mittenti del messaggio Quello L'attore stava reagendo a, eccetera (e di solito disegnando il risultato sulla carta). Questo ha due svantaggi:

  • È più lento, dal momento che Eclipse sta facendo una ricerca di testo sul (potenzialmente molti) progetto (i) e devo annotare le cose
  • Non trova necessariamente tutti gli eventi, dal momento che forse è stato inviato con !?, o forse qualcuno ha messo due spazi tra il ! e il ReportFailedUpdates, o, o, o o ....

Cosa vorrei amore è un supporto per utensili che mi consente di scoprire da dove sarebbe potuto provenire un messaggio-all'incirca l'equivalente di una gerarchia di chiamate per il codice non basato sugli attore.

Ci sono strumenti che lo fanno? È una caratteristica del scalaide per l'eclissi che non ho scoperto? Se uso Intellij, la mia vita sarà migliore?

Aggiornare

Il mio esempio potrebbe essere stato fuorviante. Non si tratta solo di capire cosa è andato storto quando tutto cade - mi ritrovo anche a farlo molto quando raccolgo un nuovo sistema e ho bisogno di capire come funziona. Sembra che non ci sia ancora uno strumento per farlo. Immagino che dovrò pensare a me stesso su come potresti iniziare ad estrarre staticamente (e forse visualizzare) il grafico del flusso di messaggi ...

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top