Пакетный рефакторинг для окончательного аргумента метода Java - PullRequest
4 голосов
/ 25 октября 2011

Я ищу способ выполнить пакетный рефакторинг для полного Java-приложения.В этом случае аргументы метода должны быть окончательными, если это еще не так.

Кто-нибудь здесь знает о таком инструменте?Или что-то, что анализирует исходный код Java и может быть расширено такими изменениями.

Ответы [ 3 ]

7 голосов
/ 25 октября 2011

Вы можете выполнить массовое изменение в IntelliJ, чтобы изменить каждое поле, локальную переменную или параметр, которые могут быть окончательными, чтобы быть окончательными.

Выполните анализ кода с помощью этой опции и глобально примените «Применить исправление», убедитесь, что он все еще компилируется, поскольку в нечетных случаях он не всегда получается правильным на 100%.

4 голосов
/ 25 октября 2011

Как предлагает Питер Лоури, 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.

Это будет, вероятно, только окончательнымпеременная, которая может быть безопасна, но те, которые вы пытаетесь определить, останутся не финальными.Тем не менее, это способ определить их.

0 голосов
/ 25 октября 2011

Я не знаю ни одного такого рефакторинга в Eclipse или NetBeans.Но приличное регулярное выражение заменит эту задачу.Чтобы убедиться, что вы случайно не выполните это в местах, где это не должно произойти, вы можете подтвердить каждую замену вручную.Это может быть нереально, если у вас есть сотни классов.В этом случае может пригодиться замена везде, а затем проверка различий с более старой версией.

Если какой-либо аргумент не будет сделан окончательным, потому что он перезаписан, он станет понятен во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...