我如何(静态地)分析java代码并在构造函数或方法中提取实际参数值?

时间:2013-02-01 12:07:01

标签: java static-analysis

我希望有一个工具可以找到(Java)构造函数/方法的所有实例,并报告每次调用的实际参数值。

我想还没有准备好的东西,而且我还需要静态分析。

您建议使用哪个库/程序?

(我必须分析Java代码,但可以使用任何语言编写分析器)

2 个答案:

答案 0 :(得分:1)

您可以使用AspectJ。在构造函数上定义切入点。然后编写一个方面来执行每次调用。然后将该方面应用于整个项目。

您方面内的代码会给出调用链的详细信息,这样您就可以自己查询参数并记录它们。

答案 1 :(得分:0)

你需要一个可以解析Java的工具,构建一个捕获代码的AST(这样你可以搜索代码中的方法调用),可以解析类型和名称(这样你就知道每个符号实例的含义并且可以确定一个特定标识符命名感兴趣的方法,而不仅仅是一个意外相同名称的符号),并且可以帮助您生成方法调用。

Java编译器提供API来支持其中一些。我不知道它会帮助您重新生成方法调用文本。

我们的DMS软件再造工具包提供通用程序分析和转换功能,包括解析,AST构建/访问,符号表构建和任意子树的漂亮打印(文本重新生成)。它有一个完整的Java前端,提供全名和类型解析。使用DMS提供的支持编写一个准确,可靠的工具来完成您想要的工作将非常简单。