如何使用 JDT 构建调用图

How to build call graph using JDT

在eclipse中,有"Call Hierarchy"可以轻松找到调用图(或方法调用关系)。 我想找到一些 API 来提取这种关系。但是我找不到任何现有的教程来帮助我。谁能给我一些线索?主要想知道JDT中应该用哪个class,输入应该是什么

顺便说一句,目标是提取此调用关系,因此其他一些方法也可能有所帮助。我试过 SOOT,但我认为 JDT 更好,因为它既有调用者也有被调用者。

我通过查看 JDT 代码来了解这些功能,这是找到这些东西的好地方。

基本上您可以从以下代码片段开始:

    CallHierarchy callHierarchy = CallHierarchy.getDefault();
    IMember[] members = { method };
    MethodWrapper[] callers = callHierarchy.getCallerRoots(members);

其中 method 是来自 JDT 的 IMethod 类型。

使用生成的 MethodWrappers,您可以获得有关它的所有信息。

重要的是要注意 class CallHierarchy 是内部的,因此它可以在 Eclipse 版本中中断,但我不知道 public API。