Есть ли список всех ключевых слов, используемых в структурном поиске и замене? - PullRequest
3 голосов
/ 21 апреля 2020

Недавно мне нужно было использовать что-то более мощное, чем рефакторинг с использованием регулярных выражений . В IntelliJ Idea есть структурный поиск и замена и несколько примеров , но мне не удалось найти список всех ключевых слов, которые можно использовать в SSR. При наборе в полях SSR я вижу некоторые предложения из разных библиотек, и неясно, что можно использовать, а что нельзя.

Есть ли список всех ключевых слов, которые можно использовать в SSR (это очень удобно, если есть не только ключевые слова, но и их объяснения)?

1 Ответ

1 голос
/ 21 апреля 2020

Имена переменных существуют для каждого шаблона

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

Вы можете сделать это, нажав кнопку «Изменить переменные ...», которая появляется под шаблоном , Вы также сможете просматривать существующие переменные для этого шаблона (и их ограничения).

Из документации :

Когда вы создаете шаблон для структурного поиска вы в основном пишете сценарий. Чтобы упростить процесс создания сценариев, IntelliJ IDEA предлагает вам список предопределенных шаблонов поиска, которые вы можете использовать в качестве прототипов для своего шаблона поиска.


Использование существующих Шаблон

Если мы взяли шаблон для «всех методов класса (в иерархии)»:

enter image description here

Использовал его для поиска следующего класса:

class Scratch {
    public void demo() {

    }
}

Получаем следующие результаты:

enter image description here


Использование пользовательского шаблона, который эмулирует существующий шаблон

Если я изменю имена и исправлю ограничения:

enter image description here enter image description here

Мы получаем те же результаты:

enter image description here


PS: Я использовал \w* в качестве ограничения для $MyMethodName$, так как в существующем шаблоне не было заполнено это поле. Однако это поле должно содержать значение, чтобы установить флажок Apply constraint within type hierarchy. Я не уверен, что было бы предпочтительным способом достижения этого, поскольку существующий шаблон, кажется, «нарушает правила» в этом аспекте.

...