我需要为 Java 中的以下任务选择一个框架:
- 提取控制流图
- 过程间和过程内分析
- 数据流分析
- PDG
- 不同的源代码分析任务(如方法体提取、测试代码提取)
哪个框架适合我的任务?
我遇到了很多不同的工具,除了 wala、soot 以及 JavaParser、Spoon 等等。
我应该选择哪个框架?理想情况下,我想采用一种更易于使用的工具。此外,我的期望是,Java 工具的普及应该已经存在于所有这些任务中。还是我的理解有误?
如果有人请指点我不同的资源等,我将不胜感激。
我需要为 Java 中的以下任务选择一个框架:
哪个框架适合我的任务?
我遇到了很多不同的工具,除了 wala、soot 以及 JavaParser、Spoon 等等。
我应该选择哪个框架?理想情况下,我想采用一种更易于使用的工具。此外,我的期望是,Java 工具的普及应该已经存在于所有这些任务中。还是我的理解有误?
如果有人请指点我不同的资源等,我将不胜感激。
我多次使用烟灰,用于不同的事情。我 100% 确定 Soot 会提取控制流图,并执行过程内和数据流分析。他们确实有一个很好的社区和愿意帮助你的好人。但是,我不太确定您是否可以使用 Soot 提取 PDG 或 SDG。我阅读了声称他们使用 Soot 完成的论文,但是我找不到源代码或示例(也许您必须进行一些修改,我不知道)。但我也知道您也可以使用 Soot 执行过程间分析。
这里有一些Soot 的教程。如果您有任何问题,我建议您加入他们的邮件组,如果您有任何问题,请提出问题。
对于 WALA,我也需要一个 PDG,因为在它的 wiki 中它说你可以提取一个 PDG。即使当您导入 WALA 项目时,其中也有一些您可能想要查看的示例代码。但是,我永远无法让它运行,因为没有足够的文档。它的大部分文档都很旧。
以下是WALA的一些教程。这也是他们拥有的数据流分析测试用例代码。也许它可以给你一些见解。我强烈建议您查看他们的测试用例,这可能会有所帮助。
简而言之,我相信您可以通过 Soot 和 WALA 完成您所要求的所有事情。然而,就我个人而言,我大部分时间都可以用 Soot 来完成它们。我想这更多的是对他们的熟悉程度以及您对其中一个的喜欢程度的问题。
Spoon 非常适合您列表中的许多任务,并且非常易于使用。它主要用于源代码转换和分析,官方文档位于http://spoon.gforge.inria.fr/。对于控制和数据流分析,有基于 Spoon的spoon-control-flow包。