Tracer la «hiérarchie de l'expéditeur» dans les acteurs de Scala
Question
Je maintiens quelques applications Scala basées sur des acteurs en ce moment, et une question que je me retrouve à poser tout le temps est Qui envoie ce message?
Par exemple, je trouve le morceau de code qui imprime le message effrayant que j'ai trouvé dans les journaux:
case ReportFailedUpdates(stuff) =>
log("The horror! The horror! " + stuff)
dieHorribly()
Et je veux savoir quelle pourrait être la cause. Si je n'utilisais pas d'acteurs, je pourrais frapper Ctrl+Alt+H
(au moins dans l'éclipse) et découvrez qui a «appelé« cette «méthode» (et qui a appelé cela, et qui a appelé ce). Avec les acteurs, je me retrouve à chercher ! ReportFailedUpdates(
Pour trouver quels acteurs envoient ce message, puis recherchez les expéditeurs du message ce L'acteur réagissait à, etc (et en dessinant généralement le résultat sur papier). Cela a deux inconvénients:
- C'est plus lent, car Eclipse fait une recherche de texte sur le (s) projet (s) potentiellement) et je dois noter des choses
- Il ne trouve pas nécessairement tous les événements, car peut-être que cela a été envoyé avec
!?
, ou peut-être que quelqu'un a mis deux espaces entre le!
et leReportFailedUpdates
, ou, ou, ou ...
Ce que je aimer est un support d'outillage qui me permet de découvrir d'où un message aurait pu provenir - à peu près l'équivalent d'une hiérarchie d'appels pour le code non-acteur.
Y a-t-il des outils qui le font? Est-ce une caractéristique du Scalaide pour Eclipse que je n'ai pas découvert? Si j'utilise Intellij, ma vie sera-t-elle meilleure?
Mise à jour
Mon exemple a peut-être été trompeur. Il ne s'agit pas seulement de comprendre ce qui ne va pas quand tout tombe - je me retrouve aussi beaucoup à faire cela lorsque je prends un nouveau système et que je dois comprendre comment cela fonctionne. On dirait qu'il n'y a pas encore d'outil pour le faire. Je suppose que je vais devoir réfléchir moi-même à la façon dont vous pourriez commencer à extraire statiquement (et peut-être visualiser) le graphique de flux de messages ...
Pas de solution correcte