用于查找变量修改的Groovy静态分析
我有一个简单的任务,需要在给定代码中找到变量的修改。这将是一个静态分析。例如,给定一个变量(例如,age),我想创建一个列表或树(一个数据结构),该列表或树给出修改该变量的内容,最好是进行修改(作为返回)的函数名或任何其他辅助信息。我开始编写我的脚本,但是我发现它非常容易出错,因为我需要考虑很多情况,比如嵌套循环等等。用于查找变量修改的Groovy静态分析,groovy,static-analysis,Groovy,Static Analysis,我有一个简单的任务,需要在给定代码中找到变量的修改。这将是一个静态分析。例如,给定一个变量(例如,age),我想创建一个列表或树(一个数据结构),该列表或树给出修改该变量的内容,最好是进行修改(作为返回)的函数名或任何其他辅助信息。我开始编写我的脚本,但是我发现它非常容易出错,因为我需要考虑很多情况,比如嵌套循环等等。 您能建议我从哪里开始吗?如果要分析的代码恰好是Groovy代码,那么您可以编写一个AST转换(可能是全局转换),它遍历代码并获取您所需的信息 Groovy文档站点有一个关于AST
您能建议我从哪里开始吗?如果要分析的代码恰好是
Groovy
代码,那么您可以编写一个AST转换(可能是全局转换),它遍历代码并获取您所需的信息
Groovy文档站点有一个关于AST转换的部分,请看
本页介绍现有ASTXForms以及如何开发自己的ASTXForms。我建议浏览实现标准AST xforms的代码,如@Immutable
、@Cannonical
等
CodeNarc()是Groovy代码的静态代码分析器,其灵感来自PMD。它还依赖于ASTXForms。
gcontracs()是使用ASTXForms实现的另一个工具。这两者可以作为进一步了解AST转换的基础
如果分析的代码恰好是Java,那么AST转换将帮不了你。你想在没有真正的解析器的情况下完成这项工作吗?为什么?代码使用API并在云上编译。