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

kri*_*ico 11 java ide refactoring intellij-idea

我正在一个java项目中,其中很大一部分代码是用我不喜欢的格式化样式编写的(并且也是非标准的),即所有方法参数都是大写的(以及所有局部变量).

在IntellJ上我能够使用"分析 - >检查代码"并实际查找所有出现的大写方法参数(超过1000).

要修复一个事件,我可以做"重构>重命名参数",它工作正常(让我们假设没有重叠).

有没有办法自动执行此重构(例如:重命名方法参数以大写字母开头,以小写字母开头,以小写字母开头)?

Sea*_*oyd 9

使用Source Parser

我认为你需要做的是使用像javaparser这样的源代码解析器来做到这一点.

对于每个java源文件,将其解析为CompilationUnit,创建一个Visitor,可能使用ModifierVisitorAdapter作为基类,并覆盖(至少)visit(MethodDeclaration, arg).然后将更改的CompilationUnit写入新文件并在之后执行diff.

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


duf*_*ymo 5

我建议你在做任何事之前考虑一些事情:

  1. 如果这是团队合作,请通知您的团队.
  2. 如果这是雇主,请通知您的老板.
  3. 如果将其检入版本控制系统,请意识到您将从wazoo中获得差异.
  4. 如果未将其签入版本控制系统,请将其签入.
  5. 在进行任何更改之前进行备份.
  6. 在行为未发生变化之前和之后,查看是否要检查一些测试.

这是一个危险的重构.小心.

  • 还要查找"Class.forName" - 它们的意思是"请勿触摸!" (3认同)