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