Как стать автором
Обновить

Комментарии 21

Крутые штуки. Надеюсь Structural Search в Rider тоже когда-нибудь появится. Пока приходится извращаться с регулярками.

Вау, огромное спасибо, особенно за автозамену, мне как раз некоторых вещей не хватало, оказывается, скорей всего, их можно будет допилить самому.
Также большой респект ребятам из IntelliJ, они гении.
НЛО прилетело и опубликовало эту надпись здесь

По описанию выглядит как тоже самое.


Вообще, насколько я понимаю, механизм достаточно абстрактен и универсален. Даром, что даже на SQL запросах и на HTML разметке работает. Ему же, по сути, только Psi модель нужна.


Так что, если решарпер строит эту модель для C#, то и механизм сможет спокойно по нему работать.

Поддержку для котлина добавили вот только-только и пока что она не полноценная, так что всё не так просто, к сожалению :(

Поддержкой Котлина активно занимаются прямо сейчас, так что она будет лучше в ближайшее время. Но да, каждый язык надо пилить отдельно.

Я правильно помню, что эта фича — только в платной версии?
Structural Search доступен и в IntelliJ IDEA Community.
никакой справки по структуре Psi дерева. Только исходники;

Детали можно выяснить эмпирически, при помощи PsiViewer.
Не так точно, как через исходники, но менее ресурсозатратно.

О! А это действительно может немного облегчить жизнь. Спасибо!


Хотя от необходимости справки это не избавляет. Но хотя бы упрощает понимание структуры.

А это точно не плагином каким-нибудь делается? У меня нету такого пункта меню...

1. Через Help | Edit Custom Properties или сразу в idea.properties
добавляем idea.is.internal=true.
2. Перезапускаем

Ого! Век живи — век учись!


Но это уже не для рядовой разработки, я так понимаю. Иначе так глубоко не прятали бы.

Скорее для плагинописателей.
Там потом еще появляется интересное всякое в Tools | Internal Actions.

Да, так можно случайно открыть портал в ад, мы не особо кричим о наличии реджистри потому что ну… экспериментальное же, может не работать или ломать, кто знает.

Да. Заработало.


Но лично мне плагин пока нравится больше, т.к. даёт больше полезной информации именно для написания скриптов в фильтрах.


Но всё равно спасибо!

Вообще сейчас вспомнил, как в Kotlin изменения делают, а потом интеншены под эти изменения пилят, чтобы автоматически мигрировать на новые версии.


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


Но тут понадобится отдельный скилл написания таких вещей...

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


Так происходит потому что поиск игнорирует какие-то вещи в Psi-дереве (вполне естественно), а структурная замена не пытается "немного переделать" код, а тупо заменяет текст на набранный пользователем шаблон, подставляет переменные шаблона поиска, после чего пытается активно восстановить потерянные вещи. Например, комментарии, модификаторы методов, какие-то отдельные блоки case… И наверняка что-то не учтено.

Упомяну также codemod, работающий в полуавтоматическом режиме и на уровне текста, а не структур языка, но тем не менее порой бывающий полезным.
Такой поиск и замена — отличная штука. На самом деле этой возможности следовало бы появиться во всех IDE и уже давно, хотя-бы в виде простого лексического поиска — чтобы можно было при поиске указывать где искать, а где нет — в коде, в строках и в комментариях. Простейшая вещь, но до сих пор никто не сделал.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.