从命令行为 Java 项目创建可视化调用图
我希望从命令行为java项目创建一个调用法。我探索了几个项目,每次都达不到(在我的理解中,还是在功能上)我所追求的目标。关于如何做到这一点的一些简单的指南会很棒,另一个目标是获得这个图的文本表示。
以下是我尝试过的:
呼叫图:https://github.com/gousiosg/java-callgraph
这给了我我想要的文本输出,但我找不到一种方法(在浏览了一段时间的文档之后),将其转换为可视(图像文件)图形输出。
烟灰:http://sable.github.io/soot/
在花费了大量时间浏览了似乎很难理解的 SOOT 文档之后,我设法让 SOOT 创建了字节码。但是,我找不到有关如何从中创建调用图的任何指南。我只在主页上看到它可以做到这一点,我从我的谷歌搜索中收到了几个电子邮件对话,所有这些都只是没有答案的问题。我正在使用带有命令的夜间构建:
java -cp soot-trunk.jar soot.Main -cp . -pp HelloWorld
其中HelloWorld是我的java文件的名称,我得到一个输出,这是一个.class文件,但我看不到如何获取实际的调用图。这是在遵循此处的指南之后:https://github.com/Sable/soot/wiki/Running-Soot。当我关注有关可视化的链接时,它们似乎是断开的链接,然后重定向回主页。我可以在命令行页面上看到有关使用-cg标志的一些信息,但无法使任何内容正常工作 - 我只是收到一个选项解析错误,建议无效参数:https://ssebuild.cased.de/nightly/soot/doc/soot_options.htm#phase_5
搜索堆栈溢出 - 现有答案我已经看过几个类似的问题,例如:Java调用图的静态分析 但是,答案只是说“使用烟灰”或“使用调用图”,我一直在尝试这些没有任何运气 - 尽管我最接近调用图,因为我有文本输出。
我看到一些基于GUI的软件和eclipse插件声称可以创建调用图,但我试图从命令行进行此操作。
任何帮助都是非常值得赞赏的,一个指南,或者一组带有调用图或Sot的命令,或者其他程序,都会真正有所帮助。可能还值得向他们提交任何简短的教程,以便他们的文档,因为在搜索时似乎有更多的问题而不是答案。
作为参考,我目前正在尝试下面一个非常简单的类:
public class HelloWorld {
public static void main(String[] args) {
foo();
}
public static void foo(){
System.out.println("Hello World");
}
}