批量重构以使Java方法参数最终

时间:2011-10-25 09:59:28

标签: java coding-style final

我正在寻找一种在完整的Java应用程序上执行批量重构的方法。在这里,即make方法参数final,但情况并非如此。

这里有人知道这样的工具吗?或者解析Java源代码的东西,可以通过这些更改进行扩展。

3 个答案:

答案 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中有任何这样的重构。但是一个体面的正则表达替换就可以了。为了确保您不会在不应该发生的地方意外执行,您可能需要手动确认每次替换。但是,如果您有数百个类,这可能不太可行。在这种情况下,在任何地方进行替换,然后使用旧版本检查差异可能是有用的。

如果任何参数因为被覆盖而不是最终的,那么在编译过程中它就会变得清晰。