我刚刚开始使用 Soot 以编程方式分析 .java 文件。根据我的阅读,Soot 似乎是一个非常强大的源代码分析工具,但我在网上找到的大多数材料都在谈论将它用作命令行工具。
我需要以编程方式从给定目录中的 .java 文件加载类,构建程序依赖图 (PDG) 并执行一些程序切片。我仍然不确定 Soot 是否提供切片,但我可以在拥有 PDG 后自己实现。
首先,我尝试使用以下代码:
Options.v().set_whole_program(true);
Options.v().set_soot_classpath("...");
SootClass c = Scene.v().loadClassAndSupport("MyClass");
c.setApplicationClass();
CHATransformer.v().transform();
CallGraph cg = Scene.v().getCallGraph();
但是,它不起作用。它在通话中卡住loadClassAndSupport
了几秒钟,然后我的程序突然存在,没有给出任何异常或任何东西。
如果有人尝试以编程方式使用 Soot,我还需要设置其他选项吗?或者你能告诉我他们从头开始以编程方式设置 Soot 的教程吗?