我正在寻找一种批量重构完整Java应用程序的方法,具体来说是将未声明为final的方法参数设置为final。
这里是否有人知道这样的工具?或者可以解析Java源代码并可以进行此类更改的工具。
这里是否有人知道这样的工具?或者可以解析Java源代码并可以进行此类更改的工具。
正如Peter Lawrey所建议的那样,IntelliJ可以实现此功能。
分析 -> 检查代码 -> 自定义配置文件
在“代码风格问题”部分中,您可以看到:
字段可能是final
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
局部变量或参数可以是final
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.
这将很可能只是使可以安全地成为最终变量的变量成为最终的,但你试图找到的那些变量仍然不会是最终的。尽管如此,这是一种发现它们的方法。
我不知道Eclipse或NetBeans中是否有这样的重构工具。但是一个不错的正则表达式替换可以解决问题。为了确保您不会在不应该发生的地方意外执行它,您可能需要手动确认每个替换。如果您有数百个类,则这可能并不可行。在这种情况下,到处进行替换,然后检查与旧版本的差异可能会有所帮助。
如果任何参数因被覆盖而没有被声明为final,那么在编译期间就会变得清晰明了。