這裏是一個與使用CHA構造Java字節碼的調用圖的算法有關的問題。OPAL-關於使用CHA算法在抽象類中定義方法的調用
由於抽象類中的方法沒有具體的方法實現,因此向這些方法添加調用邊緣可能有點誤導。例如 以junit-4.12.jar
。 runFailed
已被定義在junit.runner.BaseTestRunner
這是一個抽象類。此外,也有方法getTest
調用runFailed
這junit.runner.BaseTestRunner
同時也定義在「假設層次的CHA調用圖構造算法」(賈森&阿塔納斯),據說
「給出一個調用站點xm(),其中x的聲明類型爲C,x的可能運行時類型必須是C的非抽象子類型。
至於即時考慮,沒有添加從junit.runner.BaseTestRunner getTest
呼叫邊緣(Calledge1)至junit.runner.BaseTestRunner runFailed
,更合理從junit.runner.BaseTestRunner getTest
添加一個呼叫邊緣(Calledge2)至junit/textui/TestRunner runFailed
作爲TestRunner的延伸BaseTestRunner。
在運行測試代碼以獲取CallGraph.calledByStatistics()的結果後,只找到Calledge1。 Calledge2缺失。
有沒有人可以幫我確認一下? 預先感謝您。
問候,
江