一段时间以来,我一直在努力用Soot创建控制流图,但我有点迷惑于它的tutorials。我一直在尝试将Soot用作库或API,而不是将Soot用作Eclipse插件。
我想要做的是,我有很多Java项目,并且想要创建/生成这些项目的控制流图。我还看到Soot中有一个功能,可以生成“ DOT”格式的控制流图,这对我来说也是完全可以接受的。
任何显示如何使用Soot创建/生成控制流图的指南或代码示例都将很棒!
最佳答案
您可以通过仅创建一个新的ExceptionalUnitGraph并将方法的SootBody传递给它来创建方法本地的CFG。 Wiki中的Soot教程向您展示了如何做到这一点。
要获取过程间CFG,即ICFG,可以使用Soot扩展英雄:
https://github.com/Sable/heros/blob/develop/src/heros/InterproceduralCFG.java