У меня есть некоторый код Java с инструкциями SQL, написанными в виде строк Java (пожалуйста, не используйте пламя войны OR / M, встроенный SQL - это не мое решение).
Я семантически разбил операторы SQL на несколько объединенных строк в несколько строк кода для простоты обслуживания. Так что вместо чего-то вроде:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
У меня есть что-то вроде:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
Этот стиль значительно упрощает чтение и поддержку SQL (IMHO), особенно для больших запросов. Например, я могу перевести мой редактор в режим «перезаписи» и довольно легко изменить текст на месте.
Обратите внимание, что эта проблема обобщается за пределы конкретного примера SQL. Любой код, который написан с любым вертикальным форматированием, особенно табличными конструкциями, может быть уничтожен симпатичным принтером.
Теперь некоторые участники проекта используют редактор Eclipse, и семантическое форматирование часто разрушается при форматировании всего исходного файла.
Есть ли способ проинструктировать Eclipse игнорировать определенные строки исходного текста в отношении форматирования?
Я ищу что-то вроде специального комментария, который переключает форматировщик Eclipse. В идеале, такой комментарий может быть настраиваемым, чтобы быть любым, что мы выбираем, и другие средства форматирования могут быть запрограммированы, чтобы уважать его:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
Очевидно, что одно «решение» состоит в том, чтобы члены нашей команды стандартизировали какой-то внешний форматировщик, такой как Jalopy или JIndent , но это не тот вопрос, о котором идет речь (также не мое решение по этому проекту): я специально ищу способ избегайте форматирования Eclipse на разовой основе.
В идеале решение позволит мне вставить инструкции для форматера Eclipse, не требуя от членов команды, использующих Eclipse, каких-либо реконфигураций IDE (кроме возможности выбора комментария к команде, не зависящей от форматера: STOP-ECLIPSE-FORMATTING
→ STOP-FORMATTING
).
источник
Ответы:
Eclipse 3.6 позволяет отключить форматирование, поместив специальный комментарий, например
Особенности включения / выключения должны быть включены «на» в настройках Eclipse: Java > Code Style > Formatter. Нажмите на Edit, Off/On Tagsвключите Enable Off/On tags.
Также можно изменить магические строки в настройках - ознакомьтесь с документацией по Eclipse 3.6 здесь .
Больше информации
Java > Code Style > Formatter > Edit > Off/On Tags
Это предпочтение позволяет вам определить один тег для отключения и один тег для включения средства форматирования (см. Вкладку «Выкл. / Вкл. Теги» в вашем профиле форматера):
Вам также нужно включить флаги из Java Formatting
источник
AFAIK из Eclipse 3.5 M4 в формататоре имеет опцию «Никогда не объединять строки», которая сохраняет разрывы пользовательских строк. Может быть, это то, что вы хотите.
Еще есть этот уродливый хак
источник
Смотрите этот ответ на SO .
Есть еще одно решение, которое вы можете использовать для подавления форматирования комментариев конкретного блока. Используйте
/*-
(обратите внимание на дефис) в начале комментария блока, и форматирование не будет затронуто, если вы отформатируете остальную часть файла.Источник: документация в Oracle .
источник
Вместо того, чтобы отключить форматирование, вы можете настроить его так, чтобы он не объединял уже перенесенные строки. Аналогично ответу Джиттера, вот для Eclipse STS:
Свойства → Стиль кода Java → Форматер → Включить специфические настройки проекта ИЛИ Настроить параметры рабочего пространства → Редактировать → Перенос строк (вкладка) → установить флажок «Никогда не объединять уже перенесенные строки»
Сохранить, применить.
источник
Вы должны включить возможность добавлять теги форматера. В меню выберите:
Windows → Preferences Java → Code Style → Formatter
Нажмите Editкнопку Выберите последнюю вкладку. Обратите внимание на поле «Вкл / Выкл» и включите их с помощью флажка.
источник
Если поставить знак плюс в начале строки, он форматируется иначе:
источник
Я использую строковые части фиксированной ширины (дополненные пробелами), чтобы форматер не испортил мой отступ строки SQL. Это дает смешанные результаты и не будет работать, когда пробелы не игнорируются, как в SQL, но могут быть полезны.
источник
Завершите каждую строку двойной косой чертой "//". Это не даст затмению переместить их всех в одну линию.
источник
Альтернативный метод: в Eclipse 3.6 в разделе «Перенос строк», а затем «Общие параметры» есть опция «Никогда не объединять уже перенесенные строки». Это означает, что средство форматирования будет переносить длинные строки, но не отменять любое, которое у вас уже есть.
источник
У @xpmatteo есть ответ на отключение частей кода, но в дополнение к этому, настройки затмения по умолчанию должны быть установлены для форматирования только отредактированных строк кода вместо всего файла.
Это предотвратило бы это в первую очередь, поскольку ваши коллеги переформатировали код, который они на самом деле не изменили. Это хорошая практика для предотвращения ошибок, которые делают diff на вашем контроле исходного кода бесполезным (когда весь файл переформатируется из-за незначительных различий в настройках формата).
Это также предотвратит переформатирование, если опция включения / выключения тегов была отключена.
источник
Фантомные комментарии, добавляющие,
//
где вы хотите новые строки, великолепны!@Formatter: off добавляет ссылку из кода в редактор. Код, по моему мнению, никогда не должен иметь таких ссылок.
Фантомные комментарии (//) будут работать независимо от используемого инструмента форматирования. Независимо от Eclipse, InteliJ или любого другого редактора, который вы используете. Это даже работает с очень хорошим форматом Google Java
Фантомные комментарии (//) будут работать во всем приложении. Если у вас также есть Javascript и, возможно, используется что-то вроде JSBeautifier . Вы можете иметь подобный стиль кода также в Javascript.
На самом деле, вы, вероятно, хотите форматирования правильно? Вы хотите удалить смешанные табуляцию / пробел и конечные пробелы. Вы хотите сделать отступ в соответствии со стандартом кода. То, что вы не хотите, это длинная очередь. Это, и только это, то, что дает вам призрачный комментарий!
источник
Этот хак работает:
Я бы предложил не использовать форматтер. Плохой код должен выглядеть плохо, а не искусственно. Хороший код требует времени. Вы не можете обмануть качество. Форматирование является частью качества исходного кода.
источник