我正在寻找一种在完整的Java应用程序上执行批量重构的方法。在这里,即make方法参数final,但情况并非如此。
这里有人知道这样的工具吗?或者解析Java源代码的东西,可以通过这些更改进行扩展。
答案 0 :(得分:7)
您可以在IntelliJ中进行批量更改,以更改每个字段,局部变量或参数,最终可以是最终的。
使用选项进行代码分析,并在全局范围内执行“Apply Fix”,确保它仍然可以编译,因为在奇数情况下并不总是100%正确。
答案 1 :(得分:4)
正如Peter Lawrey所说,IntelliJ就是这样做的。
分析 - >检查代码 - >自定义资料
在“代码样式问题”部分中,您有:
字段可能是最终的
This inspection reports any fields which may safely be made final. A static field may
be final if it is initialized in its declaration or in one static class initializer, but
not both. A non-static field may be final if it is initialized in its declaration or in
one non-static class initializer or in all constructors.
Powered by InspectionGadgets
局部变量或参数可以是最终的
This inspection reports parameters or local variables, found in the specified inspection
scope, that may have a final modifier added.
Use check boxes in the inspection options below, to define whether parameters or local
variables (or both) are to be reported.
这可能只会使最终变量可以安全地变为现在,但是你想要发现的变量仍然是非最终变量。不过,这是一种发现它们的方法。
答案 2 :(得分:0)
我不知道在Eclipse或NetBeans中有任何这样的重构。但是一个体面的正则表达替换就可以了。为了确保您不会在不应该发生的地方意外执行,您可能需要手动确认每次替换。但是,如果您有数百个类,这可能不太可行。在这种情况下,在任何地方进行替换,然后使用旧版本检查差异可能是有用的。
如果任何参数因为被覆盖而不是最终的,那么在编译过程中它就会变得清晰。