如何在Java中创建一个简单的静态调用图?

时间:2012-02-15 09:50:18

标签: java eclipse code-analysis call-graph soot

我想生成一个简单的调用图,以便能够分析java中方法的执行流程。

因此,例如,如果在代码中我能够在多个方法调用中从方法X转到方法Y,那么我想生成一个调用图,它显示从方法X到方法Y的流程。

我尝试使用SOOT但是我没有设法获得这个必需的调用图。有谁知道我可以用来生成这样的调用图的API?我正在使用Eclipse,但我无法使用插件,因为需要在多个项目中使用此工具

非常感谢你的帮助

4 个答案:

答案 0 :(得分:3)

我一直在研究最近可用于Java的静态分析库。以下是我遇到过的一些内容:

  • Chord:似乎是一个仍在维护/更新的健壮框架。以下是其predefined analysis上的一些文档的链接(包括Call Graph内容)。
  • DepFinder:此工具用于从项目生成依赖图,我想你可以从中提取静态调用图信息。

答案 1 :(得分:3)

这和我见过的API一样好:

https://github.com/gousiosg/java-callgraph

答案 2 :(得分:0)

你可以在Y中抛出一个在X中捕获的异常,然后分析异常堆栈跟踪

// in X: 
try {
   do your calls ...
} catch (Exception e )  {
     StackTraceElement[] elements =  e.getStackTrace();
     for (StackTraceElement e : elements ) {
       // ... evaluate / print ...
       System.out.println(e);
     }
}

答案 3 :(得分:0)

JTracer是一个通过生成和可视化调用图来了解Java程序执行流程的工具。记录和可视化各种事件,如方法输入和方法退出。不需要修改代码。