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 le ReportFailedUpdates, 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top