是否存在任何用于数据/控制依赖的开源Java分析库?

时间:2012-02-14 20:45:27

标签: java static-analysis

我正在寻找一个库/ API,它有一些开箱即用的数据和Java程序的控制依赖性分析。这将是给定程序的控制流图(CFG)的静态分析,以计算数据依赖性和控制依赖性。我想避免重新实现这些技术/算法,如果它们已经完成的话。程序间分析会很棒,但我也可以使用一个程序内部的程序库。

任何建议都将不胜感激。

编辑:我发现的一件事是jChord,但我还没有确定它是否真的具有我正在寻找的任何开箱即用的功能因为或者我必须自己实施它。

另一种可能性是 joeq 库,它似乎至少具有执行此操作所需的基础结构,但文档(或缺少文档)使我很难说出什么它实际上是有能力的。

我确信Eclipse在幕后进行了大量的数据流分析,但我还没有看到任何面向公众的内容。有人知道Eclipse API有这样的东西吗?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

OP表示他也对非开源系统感兴趣。

我们的DMS Software Reengineering Toolkit及其Java Front End可以解析所有方言1.4-1.7中的Java源代码,生成完整的AST,构建符号表,计算表达式类型,并确定方法中的控制和数据流,包括OP要求的明确控制依赖。

通常对高级分析感兴趣的人会考虑原始分析以外的其他内容。 DMS是一个程序分析和转换工具的生态系统,可用于将此类分析利用到源位置(直接从AST绘制)或源代码(从感兴趣的子树中精心打印)的现有代码诊断中,或者生成新的代码片段(通过汇编AST并对其进行精心打印)或最后通过实际更改原始代码(通过使用程序修改或更好的源代码修改来修改AST,以及对修改后的AST进行精心打印)。

答案 2 :(得分:0)

我发现JBoss Tattletale有一些有用的报告。

http://www.jboss.org/tattletale