Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
如何解析Java文件并自动更改变量名/方法名/类名?_Java_Parsing - Fatal编程技术网

如何解析Java文件并自动更改变量名/方法名/类名?

如何解析Java文件并自动更改变量名/方法名/类名?,java,parsing,Java,Parsing,我想知道您认为解析Java文件并自动更改变量名、方法名或类名的最佳方法是什么。我之所以这么做是因为我想通过改变代码的一小部分(上面引用的三个代码之一)来更新一些代码 例如,我可以有一个类,它有一个全局变量public static final int index=0,我想把它改为public static final int xxx=0。当然,文件中每次出现的i都应替换为xxx。类名或方法名也是如此 我被告知ANTLR可能对我有用,但我从未使用过它,如果我发现它不适合我的目的,我不想浪费时间学习

我想知道您认为解析Java文件并自动更改变量名、方法名或类名的最佳方法是什么。我之所以这么做是因为我想通过改变代码的一小部分(上面引用的三个代码之一)来更新一些代码

例如,我可以有一个类,它有一个全局变量
public static final int index=0
,我想把它改为
public static final int xxx=0
。当然,文件中每次出现的
i
都应替换为
xxx
。类名或方法名也是如此

我被告知ANTLR可能对我有用,但我从未使用过它,如果我发现它不适合我的目的,我不想浪费时间学习它

谢谢

编辑:
我不需要混淆代码,我需要改变它的一小部分。上面提到的其中一种。

最简单的方法可能是使用现有的代码模糊器,如免费的Proguard:

也许最简单的方法是使用现有的代码模糊器,比如免费的Proguard:

使用代码混淆器为您完成这项工作


或者使用像Eclipse这样的IDE,它使用重构菜单内置了这种功能。

使用代码模糊器为您完成这项工作


或者使用像Eclipse这样的IDE,它使用重构菜单内置了这种东西。

如果您只需要更改一些这样的标识符,那么重构(包括Eclipse在内的大多数IDE都支持)是简单、快速和可靠的

如果您需要做很多更改(例如,如果您试图用外语中大致相同的标识符替换英语的用法-例如,
counter
=>
compteur
),那么我个人会发现自己使用了一些可编写脚本的东西,比如sed或Perl。而且我会非常小心地确保我找到了精确的匹配(例如,当我将
谎言
更改为
真相
时,我不会将
信念'更改为'betruthf


如果您使用的是一个自动化的、一次做很多事情的解决方案,那么需要注意的一点是:确保您可以在前后测试功能,以确保您没有破坏任何东西。

如果您只需要更改一些这样的标识符,那么重构(由大多数IDE支持,包括Eclipse)是简单、快速和可靠的

如果您需要做很多更改(例如,如果您试图用外语中大致相同的标识符替换英语的用法-例如,
counter
=>
compteur
),那么我个人会发现自己使用了一些可编写脚本的东西,比如sed或Perl。而且我会非常小心地确保我找到了精确的匹配(例如,当我将
谎言
更改为
真相
时,我不会将
信念'更改为'betruthf


如果您使用的是一种自动化、一次做很多事情的解决方案,那么需要注意的一点是:确保您可以在前后测试功能,以确保您没有损坏任何东西。

您是否考虑过使用pro guard?在您的问题中,您声称您希望“更新一些代码”,但在您对Oliver的回答中,您说“我不需要混淆代码”。那么是哪一个呢?你考虑过使用pro guard吗?在你的问题中,你声称你想“刷新一些代码”,但在你对Oliver的回答中,你说“我不需要混淆代码”“。那是哪一个呢?我不需要混淆代码。我需要改变它的一小部分。类名、变量名或方法名。我不需要混淆代码。我需要改变它的一小部分。类名、变量名或方法名。