Я создаю собственные проверки на основе структурного замещения. Например, я хочу, чтобы сделать проверку преобразования кода, как:Как исключить блок кода в Intellij IDEA Structural Replace
if (!$Map$.containsKey($key$)){
$Map$.put($key$, $value$);
}
и
if ($Map$.get($key$) == null){
$Map$.put($key$, $value$);
}
в
$Map$.putIfAbsent($key$, $value$);
Но я не хочу, чтобы реагировать на код, как:
if (!$Map$.containsKey($key$)){
$Map$.put($key$, $value$);
}
else {
// any logic
}
Я попытался использовать
if (!$Map$.containsKey($key$)){
$Map$.put($key$, $value$);
}
$else$
с текстом опции «еще», но это не сработало.
Возможно ли это? Также я должен сделать два разных инспекции с одинаковым результатом замены. Можем ли мы использовать несколько шаблонов поиска?
UPDATE:
Я попытался заменить следующий рисунок
$Iterable$.forEach($value$ -> {
if ($condition$) {
$statement$;
}
});
в
$Iterable$.stream()
.filter($value$ -> $condition$)
.forEach($value$ -> $statement$);
Но после замены я получаю:
$Iterable$.stream()
.filter($value$ -> $condition$)
.forEach($value$ -> $statement$;);
Можно ли удалить «;» от результата замены?
Относительно * Обновить *; похоже, что вы сталкиваетесь с некоторыми ошибками в Structural Search. Кажется, в настоящий момент это невозможно. –
Обновление вашего обновления: исправлена ошибка. В IntelliJ IDEA 2017.2 ваша структурная замена больше не дает дополнительных точек с запятой. –