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

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

    /*
     * PSEUDOCODE
     * Read in user 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 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 > Настройки > Java > Стиль кодa > Formatter, но не могу найти его для сохранения форматирования комментариев. Я использую Eclipse 3.4.0.

Ответ 1

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

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


Оригинальный ответ: июнь 2009, Eclipse 3.4/3.5

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

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

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

/**
 * PSEUDOCODE
 * Read in user 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.

Ответ 2

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

/*-
 * 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

Ответ 3

Я только что узнал от коллеги, что 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 > Стиль кодa > Formatter, нажав Изменить, выбрав вкладку Выкл./Вкл. и проверив Включить выкл./Вкл. Теги (источник).

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

Ответ 4

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

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

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

Ответ 5

Окружать конкретный текст тегами <pre> </pre>.

Ответ 6

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

Ответ 7

Ответ проверен только в Eclipse:

  • Проблема с принятым ответом (Java Formatter (Windows > Preferences > Java > Code Style > Formatter), вы можете создать новый профиль Formatter), вы влияете на каждый javadoc в своем коде. Возможно, это нежелательно для других частей кода, которые необходимо отформатировать.
  • Проблема с /* - решением заключается в том, что он работает только с "регулярными" комментариями блоков, а не комментариями Javadoc (как указано Pops).

Мое предложение было бы просто использовать теги html. Вы можете, например, обернуть текст после разрыва тегами p, чтобы увидеть дополнительную строку перевода строки в отображаемом html. Вот как выглядит ваш пример (я добавил еще немного текста и использовал p для случая 1):

/**
* PSEUDOCODE<br>
* 
* Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
* eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
* voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
* clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
* amet. <br>
* 
* Three cases are possible:<br>
* 
* Case 1: foobar<br>
* <p>
* Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
* eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
* voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
* </p>
* 
* Case 2: fred hacker do case 2 things<br>
* 
* Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
* eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
* voluptua. At vero eos et accusam et justo duo dolores et ea rebum.<br>
* 
*/

Ответ 8

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

Плюсы:

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

Минусы:

  • Не вижу одного

Ответ 9

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

/**
 * <pre>
 *    this part
 *   is
 *      out of
 *  format
 *    
 * </pre>
 */

Ответ 10

Он зависит от языка.

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

Изменить (отражая изменения в OP-вопросах

Для редактирования форматирования java-кода перейдите к "Окно → Настройки → Java → Стиль кода → Formatter"

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

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

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

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

Ответ 11

Вы можете изменить это в Windows - "Настройки" - "Java" - "Стиль кода" - "Форматтер", чем нажать кнопку "Изменить", найти "Комментарии", выбрать "Никогда не присоединяться к линиям".

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

Ответ 12

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

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