我正在使用ASTParser
来解析项目中的Java源代码。我设法获得Java项目的不同类中的所有方法的名称和返回类型。我现在想知道是否有可能在main
中的方法之间存在依赖关系。
实际上我还没有读过这个类的所有文档,这有点复杂。您是否知道是否可以了解主程序中方法的相互关联性?如果不可能,我可以使用其他API吗?
感谢。
答案 0 :(得分:1)
众所周知,这个问题非常困难,因为很难确定调用哪些特定方法,因为Java允许覆盖大多数方法。在最坏的情况下,这是不可判定的,所以你能得到的最好的是保守的近似值。因此,没有一种好的算法可以解决这个问题,尽管很多研究论文试图在一定程度上回答这个问题。
BDDBDDB framework可用于执行此类分析,并能够为程序获得非常准确的调用图。但是,这需要您学习使用新框架而不是现在使用的ASTParser
。
This paper还声称为Java开发了一个良好的类型分析,允许静态方法解析。它的工作原理是将Java代码编译成自己的中间语言,并且可能不适用于ASTParser
。