J'ai un code source d'un projet java et je veux tracer pour chaque méthode, quelle méthode appelée à l'intérieur de cette méthode.
exemple:
main |_foo2 |_bar |_bar2 |_bar
le résultat sera comme:
foo(){} bar(){} bar2(){ bar(); } foo2(){ bar(); bar2(); } main(){ foo2(); }
tous les add-ons ou plug-ins sont d'accord et comme il s'agit d'un projet interne d'une entreprise, j'espère que les outils sont hors ligne. Pour le résultat, il n'est pas nécessaire que ce soit comme ça, un graphique ou quoi que ce soit, ça va.
Ajout d'informations:
4 Réponses :
S'il s'agit d'un projet Java pur sans autre framework, une façon de le faire serait d'utiliser AspectJ pour intercepter chaque méthode, et de mettre une entrée dans Thread local map pour le nom de la méthode au compteur + 1. Si main
vaut 0, foo2
vaut 1, bar
et bar2
vaut 2, et ainsi de suite.
Consultez cette section de la documentation AspectJ. < / p>
le problème principal est que je ne peux pas exécuter le code
ajc
au lieu de javac
. Cela vous permet d'utiliser AspectJ
. En utilisant les aspects, vous pouvez définir Pointcut
et enregistrer ce dont vous avez besoin. Premièrement, si vous utilisez Eclipse comme IDE, vous pouvez faire un clic droit sur une méthode et choisir "ouvrir la hiérarchie des appels" puis eclipse montre toutes les méthodes qui appellent la méthode sélectionnée et toutes les méthodes qui sont appelées à partir de la méthode sélectionnée.
Deuxièmement, nous pouvons la trouver par programmation.
c'est-à-dire en utilisant les classes internes du JDT eclipse , ce sont les mêmes classes utilisées par eclipse pour montrer qui appelle la méthode.
Au départ, nous devons importer ci-dessous deux classes,
import org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchy; import org.eclipse.jdt.internal.corext.callhierarchy.MethodWrapper;
Et ensuite Create une méthode pour obtenir des appelants, et qui prend la méthode sélectionnée comme entrée. (veuillez noter que ce sera votre méthode de type API) vous devriez appeler cette méthode à partir de votre programme pour trouver quelles méthodes appellent quoi ..
p >
Vous pouvez utiliser un plugin comme Code Iris d'IntelliJ
Code Iris fournit un graphique correct, mais quand je le vois, le graphique semble très compliqué hahah
Code Iris est utile lorsque vous avez affaire à une grande base de code. Pour "hello world", vous pouvez utiliser Eclipse comme IDE, puis vous pouvez faire un clic droit sur une méthode et choisir "ouvrir la hiérarchie des appels". Cela peut servir votre objectif. Il existe d'autres logiciels comme "Source Insight" qui répondront également à vos besoins.
est-ce que ça va si le code source est dans le pot ou l'oreille ou autre chose?
Êtes-vous capable de changer le code de ces méthodes?