Заставить средство форматирования кода Java Eclipse игнорировать комментарии блоков

Есть ли способ заставить встроенный в Eclipse форматер кода Java игнорировать комментарии? Всякий раз, когда я его запускаю, получается следующее:

    /*
     * PSEUDOCODE
     * Read in user's string/paragraph
     * 
     * Three cases are possible
     * Case 1: foobar
     *         do case 1 things
     * Case 2: fred hacker
     *         do case 2 things
     * Case 3: cowboyneal
     *         do case 3 things
     *         
     * In all cases, do some other thing
     */

в это:

    /*
     * PSEUDOCODE Read in user's string/paragraph
     * 
     * Three cases are possible Case 1: foobar do case 1 things Case 2: fred
     * hacker do case 2 things Case 3: cowboyneal do case 3 things
     * 
     * In all cases, do some other thing
     */

Я уже играл с настройками Windows> Preferences> Java> Code Style> Formatter, но не могу найти ни одного для сохранения форматирования комментариев. Я использую Eclipse 3.4.0.


person Pops    schedule 21.06.2009    source источник
comment
Это прямо в конфигурации Formatter, я не знаю, как вам это не хватает. Отредактируйте профиль, есть диалоговое окно с 8 вкладками, последняя вкладка предназначена для форматирования комментариев.   -  person skaffman    schedule 22.06.2009
comment
Я вижу вкладку комментариев, но проблемы с форматированием возникают независимо от того, какую комбинацию флажков я использую.   -  person Pops    schedule 25.06.2009
comment
У меня та же проблема со Scala в Eclipse, но приведенные ниже решения специфичны для Java, так как вкладка форматирования кода Scala имеет разные параметры. Есть ли способ отключить переформатирование комментариев для Scala?   -  person Glenn Strycker    schedule 31.10.2014


Ответы (11)


Обновите 2010, как указано OP и в этом ответе специальной строки // @formatter:off в Eclipse 3.6 достаточно.

Он не был доступен на время вопроса.


Исходный ответ: июнь 2009 г., Eclipse 3.4 / 3.5

С помощью Java Formatter (Windows > Preferences > Java > Code Style > Formatter) вы можете создать новый профиль Formatter.

На вкладке «Комментарии» (в eclipse3.5) вы можете убедиться, что в поле «Javadoc comment settings» снять флажок «Format HTML tags».
Также отметьте «Never join lines» в разделе «General settings».

Тогда ваш комментарий должен быть записан как:

/**
 * PSEUDOCODE
 * Read in user's string/paragraph
 * 
 * Three cases are possible:
 * <dl>
 *   <dt>Case 1: foobar</dt>
 *     <dd>        do case 1 things</dd>
 *   <dt>Case 2: fred hacker</dt>
 *     <dd>        do case 2 things</dd>
 *   <dt>Case 3: cowboyneal</dt>
 *     <dd>        do case 3 things</dd>
 * </dl>        
 * In all cases, do some other thing
 */

Примечание. Я сделал комментарий Javadoc, а не простой комментарий, так как считаю, что комментарий с таким большим количеством текста лучше разместить перед методом. Кроме того, разделы документации Javadoc имеют больше параметров форматирования, с которыми можно поиграть.
Если они находятся перед методом (истинная документация Javadoc), HTML-теги <dl>, <dt> и <dd> помогут правильно представить его в представлении Javadoc.

person VonC    schedule 22.06.2009
comment
Для меня важная часть этого ответа заключалась в том, что теги HTML НЕ вставляются автоматически в разрывы строк и тому подобное. Вероятно, это очевидно для большинства, но я не осознавал, что мне нужно вручную кодировать такие вещи, как ‹br› s, пока я не увидел это здесь. - person Pops; 12.01.2010
comment
@Lord Torgamus: вы должны не только добавить эти теги, но и в первом предложении требуется период и пробел перед <br />! (см. bugs.sun.com/bugdatabase/view_bug.do?bug_id=4165985 < / а>) - person VonC; 12.01.2010
comment
У меня та же проблема со Scala в Eclipse, но приведенные ниже решения специфичны для Java, так как вкладка форматирования кода Scala имеет разные параметры. Есть ли способ отключить переформатирование комментариев для Scala? - person Glenn Strycker; 31.10.2014
comment
это не отвечает на заданный вопрос - person Enerccio; 23.01.2018

Есть еще одно решение, которое вы можете использовать для подавления форматирования определенных комментариев блока. Используйте /*- (обратите внимание на дефис) в начале комментария блока, и форматирование не изменится, если вы отформатируете остальную часть файла.

/*-
 * Here is a block comment with some very special
 * formatting that I want indent(1) to ignore.
 *
 *    one
 *        two
 *            three
 */

Источник: http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141999.html#350

person Michelle Crane    schedule 28.03.2011
comment
Никогда раньше такого не видел, даже вне контекста. +1! - person Pops; 29.03.2011
comment
К сожалению, это работает только с обычными комментариями блока, а не с комментариями Javadoc. - person Pops; 11.01.2012
comment
Идеально подходит для версии: Juno Service Release 1. Спасибо, мой спаситель! - person Hong; 21.03.2013
comment
и даже это полезно, когда у вас есть собственный модуль форматирования, который добавляет звезды для каждого начала строки, и вы не хотите, чтобы модуль форматирования по умолчанию делал это, тогда вы можете использовать / * - ...... * /, что очень полезно - person Shiva Komuravelly; 17.06.2013
comment
Все еще работает в 2020 году (версия: 2020-06 (4.16.0)) :-) очень хорошо - person rustyx; 06.09.2020

Я только что узнал от коллеги, что Eclipse предлагает специальные теги форматирования, которые можно использовать для этого:

// @formatter:off
/*
 * ╔════════╦═══════╦══════════╗
 * ║ Month  ║ Sales ║ Position ║
 * ╠════════╬═══════╬══════════╣
 * ║ June   ║ 44k   ║ 2nd      ║
 * ║ July   ║ 39k   ║ 2nd      ║
 * ║ August ║ 49k   ║ 4th      ║
 * ╚════════╩═══════╩══════════╝
 *
 * This comment shouldn't be formatted, and will now be ignored by the formatter.
 */
// @formatter:on

Обратите внимание, что вам может потребоваться вручную включить эту функцию в меню «Настройки» Java> Стиль кода> Форматирование, нажав Изменить, выбрав вкладку Выкл. / Вкл. Теги и установив флажок Включить теги Off / On (исходный код).

Быстрый поиск в Google строки @formatter: off привел меня к другому ответу SO, который упомянул эту функцию в контексте отключения средства форматирования для блоков кода. Я подтвердил, что он работает для комментариев к строкам, «обычных» комментариев блока, а также комментариев блока Javadoc.

person Pops    schedule 28.08.2012
comment
Как вы заставили его работать с комментариями JavaDoc? Я обнаружил, что мне пришлось помещать строковые комментарии до и после комментариев JavaDoc, чтобы это работало, как вы это сделали для комментария блока в этом ответе. Я надеялся, что смогу отключить форматирование только для части комментария JavaDoc. - person Michael Scheper; 18.02.2013
comment
@MichaelScheper, это было давно, и я точно не помню ... Вы пробовали совет VonC? - person Pops; 19.02.2013
comment
Это превосходно, потому что он также указывает eclipse не форматировать код. Полезно, если вы хотите сохранить собственное форматирование. - person Martin Wickman; 05.03.2014

Другая возможность - использовать HTML-тег ‹pre> в Javadoc:

/**
 * <pre>
 *    this
 *   is
 *      kept
 *  as
 *    is
 * </pre>
 */

По крайней мере, так я стараюсь встраивать свой ASCII-арт в комментарии к исходному коду :)

person Thomas Keller    schedule 03.01.2013
comment
Обратите внимание, что Eclipse отформатирует содержимое тега ‹pre› ‹/pre›, если увидит его как Java-код (если вы не снимите флажок Window- ›Preferences-› Java- ›Code Style-› Formatter- ›Edit ... [Кнопка ] - ›Комментарии [Tab] -› Форматирование фрагментов кода Java внутри тегов pre) - person gswierczynski; 06.08.2014

Обведите конкретный текст тегами <pre> </pre>.

person Philip    schedule 10.02.2010

В Eclipse 3.4: Preferences, Java-> Code Style-> Formatter, затем отредактируйте профиль, вкладку комментариев. Там есть множество опций для управления форматированием комментариев.

person skaffman    schedule 21.06.2009

Если вы хотите подавить форматирование в eclipse, вы всегда можете обернуть контент, предназначенный НЕ ДЛЯ ФОРМАТИРОВАНИЯ, в тег <pre>UNFORMATTED CONTENT</pre>. Программа форматирования Javadoc обнаружит этот тег и оставит все, что находится между этими тегами, неформатированным.

Плюсы:

  • Остальная часть документации Javadoc все еще отформатирована
  • HTML-вывод Javadoc также будет "неформатированным" из-за предварительных тегов.

Минусы:

  • Не видя ни одного
person Antoniossss    schedule 26.11.2015

один обходной путь - добавить тег pre для комментариев, которые вы не хотите форматировать в eclipse.

/**
 * <pre>
 *    this part
 *   is
 *      out of
 *  format
 *    
 * </pre>
 */
person Andy Wang    schedule 06.09.2017
comment
Верно ... но я не понимаю, что это добавляет к тому, что Филип или Томас Келлер уже сказали в своих ответах много лет назад. - person Pops; 07.09.2017

Попробуй это. Это сработало для меня. С помощью Java Formatter (Windows> Preferences> Java> Code Style> Formatter) вы можете создать новый профиль Formatter из существующего, а затем отредактировать его.

Если Eclipse не позволяет сохранить это, создайте новый и сохраните в нем. введите описание изображения здесь

person Milan Kamboya    schedule 16.06.2019
comment
Это ответ недавнего Eclipse: теперь вы можете отключить любое форматирование комментариев (javadoc, блочное или встроенное). - person Tristan; 25.10.2019

Это зависит от языка.

Например, если вы работаете с javascript, вы должны перейти в «Окно -> Настройки -> Javascript -> Стиль кода -> Средство форматирования», а затем отредактировать параметры средства форматирования.

Изменить (с учетом изменений в OP Вопросы

Для редактирования форматирования кода Java перейдите в «Окно -> Настройки -> Java -> Стиль кода -> Форматирование».

Вверху панели вы увидите

Активный профиль:
Eclipse [встроенный]

Оттуда у вас будет одна кнопка справа, «Изменить», и две ниже, «Создать ...» и «Импортировать ...». Я бы порекомендовал отредактировать существующий профиль.

В диалоговом окне редактирования профиля есть несколько вкладок вверху. Последняя вкладка - «Комментарии». Чтобы полностью отключить форматирование комментария, снимите флажок «Включить форматирование комментария Javadoc», «Включить форматирование комментария блока», «Включить форматирование комментария строки» и «Включить форматирование комментария заголовка».

person Jonathan Fingland    schedule 21.06.2009

Вы можете изменить это в Windows - Preferences - Java - Code Style - Formatter, затем нажмите кнопку Edit .., найдите Комментарии, выберите Never Join Lines.

Тогда все должно быть в порядке.

person GH Dev    schedule 01.01.2019