1、函数调用图生成的重点和难点
(1)Java语言是面向对象的语言,具有多态性
(2)Java语法规则
(3)在很多情况下无法在编译期间确定某些函数调用点中接受对象的实际类型
以上原因导致函数调用图只能大致表示函数之间的调用关系。
2、Java函数调用图构建的典型方法
(1)类层次分析Cha
论文中表示:该种方法根据得到的类层次图,如果一个对象的声明类型是父类,在运行时可能类型就包含父类及其所有子类,对某个特定的函数的调用点来说,可能的类型集合就包含父类以及子类中所有的跟该函数有关的方法。
(2)快速类型分析RTA
论文中表示:该方法的主要思想是根据程序中的实例化信息来进一步约减接收对象的可能类型集合,从而提高函数调用图的效率
(3)XTA
论文中表示:该方法采用的方式为增量式,对程序中的每个声明变量和函数都给定一个可用类型集合。每个可用类型集合包括在该函数中实例化的对象类型以及通过参数传递从调用该函数的可达函数中传递进来的可用类型。