wala 和 soot 有什么区别?

问题描述

我需要为 Java 中的以下任务选择一个框架:

  • 提取控制流图
  • 过程间和过程内分析
  • 数据流分析
  • PDG
  • 不同的源代码分析任务(如方法体提取、测试代码提取)

哪个框架最适合我的任务?

除了 wala、soot 以及 JavaParser、Spoon 之外,我还遇到了许多不同的工具。

我应该选择哪个框架?理想情况下,我想采用更易于使用的工具。此外,我的期望是 Java 工具应该已经存在于所有这些任务中。还是我的理解有误?

如果有人请我指出不同的资源等,我将不胜感激。

解决方法

Spoon 非常适合您清单上的许多任务,而且非常易于使用。它主要用于源代码转换和分析,官方文档位于 http://spoon.gforge.inria.fr/。对于控制和数据流分析,有基于 Spoon 的 spoon-control-flow 包。

,

我多次使用 Soot,用于不同的用途。我 100% 确信 Soot 提取控制流图,并执行过程内和数据流分析。他们确实有一个很好的社区和愿意帮助你的好人。但是,我不太确定您是否可以使用 Soot 提取 PDG 或 SDG。我读过声称他们用 Soot 做到的论文,但没有我能找到的源代码或示例(也许你需要做一些修改,我不知道)。但我也知道您也可以执行 interprocedural analysis with Soot

这里有一些tutorials for Soot。如果您有任何问题,我建议您加入他们的邮件组,如果您有任何问题,请提出问题。

对于 WALA,我也需要一个 PDG,因为在它的 wiki 上说你可以提取一个 PDG。即使当您导入 WALA 项目时,其中也有一些您可能想要查看的示例代码。但是,我始终无法运行它,因为没有足够的文档。它的大部分文档都很旧。

这里有一些tutorials for WALA。 这也是他们拥有的 dataflow analysis test case 代码。也许它能给你一些启示。我强烈建议您查看他们的测试用例,这可能会有所帮助。

简而言之,我相信您可以解决您对 Soot 和 WALA 提出的所有问题。但是,就我个人而言,我大多能够使用 Soot 来完成它们。我想这更重要的是对它们的熟悉程度以及您对其中一个的喜爱程度。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...