Java 如何使用烟尘创建控制流图?

Java 如何使用烟尘创建控制流图?,java,static-analysis,control-flow-graph,soot,Java,Static Analysis,Control Flow Graph,Soot,有一段时间,我一直在努力用创建一个控制流图,我有点迷失在它的控制流图中。我没有将烟尘作为Eclipse插件使用,而是尝试将烟尘作为库或API使用 我想做的是,我有一堆Java项目,我想创建/生成这些项目的控制流图。我还看到烟尘中有一个特性,我可以生成“点”格式的控制流图,这对我来说也是可以接受的 任何说明如何创建/生成带有烟尘的控制流图的指南或代码示例都非常棒 只需创建一个新的ExceptionalUnitGraph,并将方法的soutbody传递给它,就可以创建一个方法local CFG。wi

有一段时间,我一直在努力用创建一个控制流图,我有点迷失在它的控制流图中。我没有将烟尘作为Eclipse插件使用,而是尝试将烟尘作为库或API使用

我想做的是,我有一堆Java项目,我想创建/生成这些项目的控制流图。我还看到烟尘中有一个特性,我可以生成“点”格式的控制流图,这对我来说也是可以接受的


任何说明如何创建/生成带有烟尘的控制流图的指南或代码示例都非常棒

只需创建一个新的ExceptionalUnitGraph,并将方法的soutbody传递给它,就可以创建一个方法local CFG。wiki中的烟尘教程向您展示了如何做到这一点

要获取过程间CFG,即ICFG,可以使用烟尘扩展Heros:

只需创建一个新的ExceptionalUnitGraph,并将方法的吹灰体传递给它,就可以创建一个本地CFG方法。wiki中的烟尘教程向您展示了如何做到这一点

要获取过程间CFG,即ICFG,可以使用烟尘扩展Heros:

谢谢您的回复。但是,我想知道是否有一个选项可以将Java项目作为输入,并将其作为CFG输出。因为我从Javadoc中看到的是,我必须将每个类指定为SootClass,将每个方法指定为SootMethod。或者我走错了路?是的,你似乎误解了。烟尘会自动将类转换为烟尘类。请看一下Github上Wiki中的教程。我遵循了Github上Wiki中的教程。首先,我尝试按照中的说明在命令行上运行someth。重要的是,我在Win7上运行烟尘。当我键入给定的命令
java-cp-coomit-2.5.0.jar-coomit.Main-cp时-processdir..\MyProject
我在加载java.util.regex.Pattern时遇到一个
错误。然而,如果我将它与
-pp
一起使用,那么我会得到一个
无法加载类文件:java.io.ObjectInputStream
,不幸的是,我找不到克服这些问题的方法。此外,如果我能够解决这个问题,我计划通过
转储cfg
。我认为最好将讨论转移到Socket的邮件列表。在那里,您将能够在此类问题上更快地获得帮助。(事实上,浏览档案可能会回答您的许多问题)谢谢您的回复。但是,我想知道是否有一个选项可以将Java项目作为输入,并将其作为CFG输出。因为我从Javadoc中看到的是,我必须将每个类指定为SootClass,将每个方法指定为SootMethod。或者我走错了路?是的,你似乎误解了。烟尘会自动将类转换为烟尘类。请看一下Github上Wiki中的教程。我遵循了Github上Wiki中的教程。首先,我尝试按照中的说明在命令行上运行someth。重要的是,我在Win7上运行烟尘。当我键入给定的命令
java-cp-coomit-2.5.0.jar-coomit.Main-cp时-processdir..\MyProject
我在加载java.util.regex.Pattern时遇到一个
错误。然而,如果我将它与
-pp
一起使用,那么我会得到一个
无法加载类文件:java.io.ObjectInputStream
,不幸的是,我找不到克服这些问题的方法。此外,如果我能够解决这个问题,我计划通过
转储cfg
。我认为最好将讨论转移到Socket的邮件列表。在那里,您将能够在此类问题上更快地获得帮助。(事实上,浏览档案可能会回答您的许多问题)