Подтвердить что ты не робот

Могу ли я автоматически реорганизовать весь проект java и переименовать параметры верхнего регистра в нижний регистр?

Я работаю в проекте java, где большая часть кода была написана со стилем форматирования, который мне не нравится (и также не стандартным), а именно все параметры метода находятся в верхнем регистре (а также все локальные переменных).

В IntellJ я могу использовать "Analyze → Inspect Code" и фактически найти все вхождения параметров верхнего регистра (более 1000).

Чтобы исправить одно вхождение, я могу сделать "refactor > rename parameter", и он отлично работает (допустим, что перекрытие не перекрывается).

Есть ли способ автоматически выполнить этот рефактор (например: параметр метода переименования, начиная с верхнего регистра с тем же именем, начиная с нижнего регистра)?

4b9b3361

Ответ 1

Использовать исходный парсер

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

Для каждого исходного файла java проанализируйте его на CompilationUnit, создать посетителя, возможно используя ModifierVisitorAdapter в качестве базового класса и переопределить (по крайней мере) visit(MethodDeclaration, arg). Затем запишите измененный файл CompilationUnit в новый файл и затем выполните diff.

Я бы посоветовал не изменять исходный исходный файл, но создать дерево теневого файла может быть хорошей идеей (например, старый файл: src/main/java/com/mycompany/MyClass.java, новый файл src/main/refactored/com/mycompany/MyClass.java, таким образом вы можете различать все каталоги).

Ответ 2

Я бы посоветовал вам подумать о нескольких вещах, прежде чем что-либо сделать:

  • Если это командная работа, сообщите своей команде.
  • Если это для работодателя, сообщите об этом своему боссу.
  • Если это проверено в системе управления версиями, поймите, что вы будете иметь diffs, выходящий из wazoo.
  • Если он не проверен в системе управления версиями, проверьте его.
  • Сделайте резервную копию, прежде чем вносить какие-либо изменения.
  • Посмотрите, есть ли у вас какие-либо тесты для проверки до и после того, как поведение не изменилось.

Это опасный рефакторинг. Быть осторожен.

Ответ 3

Мне не известно о какой-либо прямой поддержке такого рефакторинга из ящиков в IDE. Поскольку большинство IDE будут поддерживать рефакторинг имен (которые регулярно используются). Возможно, вам придется написать некоторый плагин IDE, который мог бы просматривать исходный код (AST) и вызывать рефакторинг переименования за сценой для таких имен параметров, соответствующих этому формату.

Ответ 4

Я сделал много таких рефакторингов в довольно больших размерах файлов, используя TextPad или WildPad, и кучу reg-ex replace-all. Всегда работал на меня!

Я уверен, что если код сначала отформатирован с использованием IDE, например Eclipse (если он не отформатирован должным образом), а затем reg-ex с использованием подписи методов (scope, return-type, name, список arg, скобка), ваша работа будет выполнена в считанные секунды с помощью этих инструментов. Возможно, вам понадобится несколько заменяющих наборов reg-ex.

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

Надеюсь, это поможет!