est ici une question liée à l'algorithme de construction du graphe d'appel pour bytecode Java en utilisant CHA.OPAL-En ce qui concerne Finding Calledges des méthodes définies dans la classe abstraite en utilisant l'algorithme CHA
Comme il n'y a pas d'implémentation de la méthode concrète des méthodes dans des classes abstraites, l'ajout d'un bord d'appel à ces méthodes pourraient être un peu trompeur. prendre par exemple junit-4.12.jar
. runFailed
a été défini dans junit.runner.BaseTestRunner
qui est une classe abstraite. En outre, il y a des appels à runFailed
dans la méthode getTest
qui a également défini dans junit.runner.BaseTestRunner
Alors que dans "l'Assomption Hiérarchie pour un appel CHA Graph algorithme de construction" (Jason & Atanas), il est dit que
« donné un site d'appel xm(), où le type déclaré de x est C, le type d'exécution x12 de possible doit être un sous-type non abstrait de C. "
Pour autant que je suis considéré, sans ajouter un bord d'appel (Calledge1) junit.runner.BaseTestRunner getTest
-junit.runner.BaseTestRunner runFailed
, il est plus raisonnable d'ajouter un bord d'appel (Calledge2) junit.runner.BaseTestRunner getTest
-junit/textui/TestRunner runFailed
comme étend TestRunner BaseTestRunner.
Bien après le code de test en cours d'exécution pour obtenir le résultat de CallGraph.calledByStatistics(), a été trouvé que Calledge1. Calledge2 est manquant.
Est-ce qu'il ya quelqu'un peut me faire une faveur pour le confirmer? Merci d'avance.
Cordialement,
Jiang