Intellij IDEA 13: Как отключить рефакторинг комментариев и строк?



public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}


Я пытаюсь рефакторинг переменной класс value, что происходит на месте. Это означает, что диалог не появляется; я нажимаю enter, и он пытается рефакторинг по всему проекту, включая комментарии и что нет, в том числе:



<%--<link href="<c:url value="../core/core.css" />" />--%>


в a .JSP-файл. Это слишком "умно", чтобы пытаться рефакторинг комментарии это совпадение по всему проекту. Это часто вызывает большой риск ошибок и рефакторинга в среде Java больше не является безопасным.



то же самое происходило и в Intellij 12. Серьезно, мне не нужно Intellij рекомендовать что-либо, что считается небезопасным, или когда он не уверен, что это одно и то же!



Я могу исключить рефакторинг, но у меня нет времени, чтобы оценить пять "предложений" каждый раз. Это просто повышает вероятность человеческой ошибки: большую часть времени я просто нажимаю enter, и все вещи преломляются.



рефакторинг также является серьезной проблемой в среде Java, когда он иногда пытается заменить вещи .JS файлы. Серьезно, это должно прекратиться.



без всплывающего диалога я не могу снять галочку "строки поиска". Даже если это было отмечено, Intellij должен никогда включить предложения по умолчанию, особенно когда он находится вне текущего файла. Он также может рекомендовать их рефакторинг, но по умолчанию они должны быть исключены. То есть, это должна быть возможность выбора, а не по умолчанию уничтожать все.



это серьезная проблема пользовательского опыта с более поздним так называемым" умным " рефакторингом Intellij. При рефакторинге JS-файлов я не хочу искать Java-файлы для комментариев или строк! И точка! И наоборот!



безопасность на первом месте! Разработчики, которые знают, что они делают, будут искать строки сами, если это необходимо. В динамической языковой среде это делает Intellij невозможным для использования, потому что часто и без какой-либо четкой картины иногда проходят рефакторинги, иногда это изменения в проект, а что нет.



должна быть опция, которая говорит: "рефакторинг только относительно этого файла или при выводе 100%!", особенно для динамических языков! Для статических языков он даже не должен пытаться искать комментарии и строки вне файла.



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



EDIT



для тех из вас, кто думает, что я мог бы пойти далеко, я просто попробовал это:



С этим классом:



public class KV<K, V> {
public K key;
public V val;
public KV(K key, V val) {
this.key = key;
this.val = val;
}
}


и добавляя это к любой класс Java, например:



public class CoreConfig {
String abc = "kv.val";
String def = "somethingElse.val";
}


при рефакторинге KV.val как и раньше, я получаю следующие рекомендации, ввод от катастрофы и что-то, что я должен оценить и исключить по одному за раз. Это требует усилий и просто раздражает и рискованно. Как будто кто-то кричит: "Стой! А потом ох, ничего через минуту, разочарование и 1000 длинное слово эссе ( это ).



enter image description here



серьезно, есть ли способ отключить этот вид рискованного поведения!? И есть ли причина, по которой это включено по умолчанию??

545   2  

2 ответов:

при нажатии клавиши Shift + F6 (Refactor Rename) дважды, он открывает диалоговое окно, и вы можете отключить "поиск в комментариях и строках"

и есть ли причина, почему это по умолчанию??

Да, есть. Люди, как правило, используют слишком много DSL, шаблонов и языковых инъекций в эти дни. В простой старой Java все эти вещи в основном существуют как строки. API отражения также представляет имя метода / класса в виде строки. Ни одна IDE не может поддерживать и распознавать их все, поэтому лучше всего предоставить вам сеть безопасности от возможных ошибок рефакторинга. Если у вас есть отличное покрытие модульных тестов, хотя, тогда вы, вероятно, в безопасности здесь.

что касается комментариев, то они часто содержат примеры кода. Эти фрагменты кода быстро устаревают во время переименований, поэтому полезно, когда IDE напоминает вам об их существовании.

эта проверка, конечно, иногда приводит к ложным срабатываниям. Однако, если вы даете своим переменным описательные самоочевидные имена (я имею в виду не "var" или "val"), это вряд ли произойдет. Итак, IDE подталкивает вас к лучшему стилю кода в некотором роде.

Если вы все еще не уверены, то следуйте совету @Meo и отключите поиск в строках и комментариях.

Comments

    Ничего не найдено.