CHAを使用してJavaバイトコードのコールグラフを作成するアルゴリズムに関する質問があります。OPAL-CHAアルゴリズムを使用して抽象クラスで定義されたメソッド呼び出しの呼び出しについて
抽象クラスでのメソッドの具体的な実装方法がないため、このようなメソッドにコールエッジを追加すると少し誤解を招く可能性があります。 たとえば、junit-4.12.jar
とします。 runFailed
は、抽象クラスであるjunit.runner.BaseTestRunner
で定義されています。また、(ジェイソン&アタナス)「CHAコールグラフ構築アルゴリズムのための仮定階層」で、
は「与えられたと言われている間も
junit.runner.BaseTestRunner
で定義された方法
getTest
でrunFailed
への呼び出しがありますxの宣言された型がCであるコール・サイトxm()では、xの実行可能タイプ は、抽象的な非サブタイプのCでなければなりません。
限り私が検討していますように、junit.runner.BaseTestRunner getTest
からjunit.runner.BaseTestRunner runFailed
にコールエッジ(Calledge1)を追加することなく、テストランナーがBaseTestRunnerを拡張するようjunit.runner.BaseTestRunner getTest
からjunit/textui/TestRunner runFailed
にコールエッジ(Calledge2)を追加することがより合理的です。
CallGraph.calledByStatistics()の結果を取得するためにテストコードを実行した後、Calledge1のみが見つかりました。 Calledge2がありません。
誰かが私にこれを確認する好意を与えることができますか? ありがとうございます。
よろしく、
江