Как отключить форматирование кода Eclipse для определенных разделов кода Java?
у меня есть некоторый Java - код с SQL-инструкциями, написанными как строки Java (пожалуйста, нет или/M flamewars, встроенный 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
очевидно, что одно "решение" состоит в том, чтобы наши члены команды стандартизировались на некоторых внешний форматер, как драндулет или JIndent, но это не то, о чем этот вопрос (также, не мое решение по этому проекту): я специально ищу способ избежать Eclipse formatter на специальной основе.
В идеале, решение позволит мне вставить инструкции для Eclipse formatter не требуя, чтобы члены команды, использующие Eclipse, выполняли любую реконфигурацию IDE (кроме возможного выбора агностика форматирования комментарий к команде:STOP-ECLIPSE-FORMATTING→ STOP-FORMATTING).
12 ответов:
Eclipse 3.6 позволяет отключить форматирование, поместив специальный комментарий, например
// @formatter:off ... // @formatter:onфункции включения / выключения должны быть включены в настройках Eclipse: Java >Стиль Кода>форматер. Нажмите на Edit,Off/On Теги включить включить/выключить теги.
также можно изменить магические строки в настройках - проверьте программное обеспечение Eclipse 3.6 документы здесь.
Дополнительная Информация
Java > Стиль Кода > форматер > Edit > Off/On Теги
этот параметр позволяет определить один тег для отключения и один тег для включения модуля форматирования (см. вкладку Off / On Tags в вашем модуле форматирования профиль):
вы также должны включить флаги от Форматирование Java
AFAIK из Eclipse 3.5 M4 на форматере имеет опцию "никогда не соединять линии", которая сохраняет разрывы пользовательских линий. Может быть, это то, что вы хотите.
еще есть этот уродливый Хак
String query = // "SELECT FOO, BAR, BAZ" + // " FROM ABC" + // " WHERE BAR > 4";
вместо отключения форматирования можно настроить его так, чтобы он не соединял уже обернутые строки. Подобно ответу джиттера, вот для Eclipse STS:
свойства → стиль кода Java → форматирование → включить параметры проекта или настроить параметры рабочего пространства → редактировать → перенос строк (вкладка) → проверить "никогда не присоединять уже обернутые строки"
сохранить, применить.
посмотреть это ответ на так.
есть еще одно решение, которое можно использовать для подавления форматирование отдельных блока комментариев. Используйте
/*-(обратите внимание на дефис) в начале комментария блока, и форматирование не будет затронуто, если вы отформатируете остальную часть файла./*- * Here is a block comment with some very special * formatting that I want indent(1) to ignore. * * one * two * three */источник: документация в Oracle.
вы должны включить возможность добавления тегов форматирования. В меню перейдите к:
Windows → предпочтения Java → Стиль Кода → форматер
нажать Edit. Выберите последнюю вкладку. Обратите внимание на коробку и включите их с помощью флажка.
Если вы ставите знак "плюс" в начале строки, это форматы по-разному:
String query = "SELECT FOO, BAR, BAZ" + " FROM ABC" + " WHERE BAR > 4";
Я использую фиксированную ширину string-parts (дополненную пробелами), чтобы избежать того, чтобы форматер испортил мой отступ строки SQL. Это дает вам смешанные результаты и не будет работать там, где пробелы не игнорируются, как в SQL, но могут быть полезны.
final String sql = "SELECT v.value FROM properties p " + "JOIN property_values v ON p.property_id = v.property_id " + "WHERE p.product_id = ? " + "AND v.value IS NOT NULL ";
конец каждой из строк с двойной косой чертой "//". Это будет держать eclipse от перемещения их всех на одну линию.
альтернативный метод: в Eclipse 3.6 В разделе " перенос строк "затем" общие настройки "есть опция" никогда не присоединяться к уже обернутым линиям."Это означает, что форматер будет обертывать длинные линии, но не отменять любую обертку, которую вы уже имеете.
@xpmatteo имеет ответ на отключение части кода, но в дополнение к этому, настройки eclipse по умолчанию должны быть установлены только форматировать отредактированные строки кода вместо всего файла.
Preferences->Java->Editor->Save Actions->Format Source Code->Format Edited Linesэто предотвратило бы это в первую очередь, так как ваши коллеги переформатируют код, который они на самом деле не меняли. Это хорошая практика для предотвращения неудач, которые делают diff на вашем исходном контроле бесполезным (когда весь файл переформатирован, потому что незначительных различий в настройке формата).
это также предотвратит переформатирование, если опция включения/выключения тегов была отключена.
фантомные комментарии, добавление
//где вы хотите, чтобы новые линии, здорово!
@formatter: off добавляет ссылку из кода в Редактор. Кодекс, на мой взгляд, никогда не должен иметь таких ссылок.
фантомные комментарии ( / / ) будут работать независимо от используемого инструмента форматирования. Независимо от Eclipse или InteliJ или любого другого редактора, который вы используете. Это даже работает с очень хорошим Google Java Формат
фантомные комментарии ( / / ) будут работать по всему приложению. Если у вас также есть Javascript и, возможно, использовать что-то вроде JSBeautifier. Вы можете иметь подобный стиль кода также в Javascript.
на самом деле, вы, вероятно, хотите форматирования верно? Вы хотите удалить смешанные табуляции / пробелы и конечные пробелы. Вы хотите отступить строки в соответствии со стандартом кода. то, что вы не делаете хотеть-это длинная очередь. это, и только это, то, что дает вам призрачный комментарий!
этот хак работает:
String x = "s" + //Formatter Hack "a" + // "c" + // "d";Я бы предложил не использовать средства форматирования. плохой код должен выглядеть плохо, а не искусственно хорошо. хороший код требует времени. Вы не можете обмануть качество. Форматирование является частью качества исходного кода.


Comments