java - 如何使用 Soot 创建控制流图?

标签 java static-analysis control-flow-graph soot

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

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

任何展示如何使用 Soot 创建/生成控制流图的指南或代码示例都很棒!

最佳答案

您只需创建一个新的 ExceptionalUnitGraph,并将其传递给方法的 SootBody,即可创建方法本地 CFG。 wiki 中的 Soot 教程向您展示了如何做到这一点。

要获得过程间 CFG,即 ICFG,您可以使用 Soot 扩展 Heros: https://github.com/Sable/heros/blob/develop/src/heros/InterproceduralCFG.java

关于java - 如何使用 Soot 创建控制流图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944837/

相关文章:

java - Java 中 Arraylist 的排列和组合?

continuous-integration - 通过 cppcheck 分析的结果在 TeamCity 中构建失败的任何方式

c++ - 是否有任何静态分析工具可以检查 Rule of 3(或 Rule of 5 C++11)

algorithm - 在有向图中找到所有可能路径中的公共(public)路径

gcc - 从 gcc 输出中提取控制流图

llvm - 获取类型 br 指令的标签字段中引用的基本 block 的第一条指令

java - GWT 客户端 - 服务器 SimpleDateFormat 将时区更改为默认值

java - 特殊字符问题 : MQ message PUT error : java. nio.charset.UnmappableCharacterException

java groovy提取两个字符串

java - 在标准 PMD 圈复杂度插件上获取 ClassNotFoundException