Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于查找变量修改的Groovy静态分析_Groovy_Static Analysis - Fatal编程技术网

用于查找变量修改的Groovy静态分析

用于查找变量修改的Groovy静态分析,groovy,static-analysis,Groovy,Static Analysis,我有一个简单的任务,需要在给定代码中找到变量的修改。这将是一个静态分析。例如,给定一个变量(例如,age),我想创建一个列表或树(一个数据结构),该列表或树给出修改该变量的内容,最好是进行修改(作为返回)的函数名或任何其他辅助信息。我开始编写我的脚本,但是我发现它非常容易出错,因为我需要考虑很多情况,比如嵌套循环等等。 您能建议我从哪里开始吗?如果要分析的代码恰好是Groovy代码,那么您可以编写一个AST转换(可能是全局转换),它遍历代码并获取您所需的信息 Groovy文档站点有一个关于AST

我有一个简单的任务,需要在给定代码中找到变量的修改。这将是一个静态分析。例如,给定一个变量(例如,age),我想创建一个列表或树(一个数据结构),该列表或树给出修改该变量的内容,最好是进行修改(作为返回)的函数名或任何其他辅助信息。我开始编写我的脚本,但是我发现它非常容易出错,因为我需要考虑很多情况,比如嵌套循环等等。
您能建议我从哪里开始吗?

如果要分析的代码恰好是
Groovy
代码,那么您可以编写一个AST转换(可能是全局转换),它遍历代码并获取您所需的信息

Groovy文档站点有一个关于AST转换的部分,请看 本页介绍现有ASTXForms以及如何开发自己的ASTXForms。我建议浏览实现标准AST xforms的代码,如
@Immutable
@Cannonical

CodeNarc()是Groovy代码的静态代码分析器,其灵感来自PMD。它还依赖于ASTXForms。 gcontracs()是使用ASTXForms实现的另一个工具。这两者可以作为进一步了解AST转换的基础


如果分析的代码恰好是Java,那么AST转换将帮不了你。

你想在没有真正的解析器的情况下完成这项工作吗?为什么?代码使用API并在云上编译。