我可以自动重构整个Java项目并将大写方法参数重命名为小写吗?


问题内容

我在一个Java项目中工作,其中很大一部分代码是用我不喜欢的格式样式编写的(也是非标准的),即所有方法参数都是大写的(还有所有局部变量)。

在IntellJ上,我可以使用“分析->检查代码”并实际上找到所有出现的大写方法参数(超过1000个)。

要解决一个问题,我可以做“重构>重命名参数”,它可以正常工作(假设没有重叠)。

有没有办法自动进行此重构(例如:将以大写字母开头的方法参数重命名为以小写字母开头的相同名称)?


问题答案:

使用源解析器

我认为您需要做的是使用javaparser之类的源代码解析器来执行此操作。

对于每个Java源文件,将其解析为CompilationUnit,创建一个Visitor,可能使用ModifierVisitorAdapter作为基类,并重写(至少)visit(MethodDeclaration, arg)。然后将更改后的CompilationUnit写入新文件,然后进行比较。

我建议不要更改原始源文件,但是创建一个影子文件树可能是一个好主意(例如,旧文件:src/main/java/com/mycompany/MyClass.java,新文件src/main/refactored/com/mycompany/MyClass.java,这样您就可以区分整个目录)。