Как форматировать javadoc в intelliJ [duplicate]

Ваш Javascript будет выполняться на клиенте, а не на сервере. Это означает, что foo не оценивается на стороне сервера, и поэтому его значение не может быть записано в файл на сервере.

Лучший способ подумать об этом процессе - это как будто вы генерируя текстовый файл динамически. Текст, который вы генерируете, становится исполняемым кодом после того, как браузер интерпретирует его. Только то, что вы размещаете между тегами <?php, оценивается на сервере.

Кстати, создание привычки встраивать случайные фрагменты PHP-логики в HTML или Javascript может привести к серьезному запутанному коду. Я говорю от болезненного опыта.

466
задан Michael Myers 12 February 2009 в 16:59
поделиться

13 ответов

Помимо уже упомянутых тегов <pre>, вы также должны использовать аннотацию @code JavaDoc, что значительно облегчит жизнь, когда дело касается проблем с объектами HTML (в частности, с помощью Generics), например:

* <pre>
* {@code
* Set<String> s;
* System.out.println(s);
* }
* </pre>

Дает правильный вывод HTML:

Set<String> s;
System.out.println(s);

Если опустить блок @code (или с помощью тега <code>) приведет к тому, что HTML будет выглядеть следующим образом:

Set s;
System.out.println(s);

(Для справки, описания тегов Java SE 8 можно найти здесь: Теги Javadoc )

671
ответ дан David Tonhofer 24 August 2018 в 01:05
поделиться
  • 1
    {@code} будет делать & lt; pre / & gt; для вас, IIRC. – Tom Hawtin - tackline 12 February 2009 в 17:36
  • 2
    Я бы тоже так подумал, но, к сожалению, этого не происходит, вам все равно нужно добавить & lt; pre & gt; чтобы получить разрывы строк. – Fabian Steeg 12 February 2009 в 17:38
  • 3
    К сожалению, кажется, что когда вы нажмете Ctrl + Shift + F (Формат кода в Eclipse), Eclipse испортил тег {@code} и заменил его на {& amp; # 064; code ... – jpdaigle 13 May 2010 в 15:54
  • 4
    @jpdaigle Я просто попробовал это в Eclipse Galileo и Helios, и форматировщик ничего не заменил для меня (в Mac OS, но я никогда не видел, чтобы форматирование делал что-то подобное на других платформах). – Fabian Steeg 13 May 2010 в 23:40
  • 5
    Другой неудачный, если у вас есть блоки в вашем примере кода с использованием фигурных скобок & quot; {} & quot ;, первая закрывающая скобка завершает блок @code. Один из способов - использовать (подождать его ...) html сущности для фигурных скобок. Я не вижу убедительного аргумента для & lt; pre & gt; теги для кода с блоками. – Ed Griebel 27 January 2011 в 17:12

Мне удалось создать хорошо выглядящие HTML-файлы со следующим snip-показанным в коде 1.

 * <pre>
 * {@code
 * A-->B
 *  \
 *   C-->D
 *    \   \
 *     G   E-->F
 * }
 *</pre>

(код 1)

Код 1 превращен в сгенерированный javadoc HTML-страница на рисунке 1.

A-->B
 \
  C-->D
   \   \
    G   E-->F

(рисунок 1)

Однако в NetBeans 7.2, если вы нажали Alt + Shift + F (чтобы переформатировать текущий код), код 1 переходит в код 2.

 * <
 * pre>
 * {@code
 * A-->B
 *  \
 *   C-->D
 *    \   \
 *     G   E-->F
 * }
 * </pre>

(код 2)

, где первый <pre> теперь разбит на две строки. Код 2 создает сгенерированный HTML-файл javadoc, как показано на рис. 2.

< pre> A-->B \ C-->D \ \ G E-->F

(Рис. 2)

Представление Стив Б (Код 3), по-видимому, дает наилучшие результаты и остается форматированным как и ожидалось, даже после нажатия Alt + Shift + F.

*<p><blockquote><pre>         
* A-->B
*  \
*   C-->D
*    \   \
*     G   E-->F
* </pre></blockquote>

(код 3)

Использование кода 3 создает такой же выход javadoc HTML, как показано на рисунке 1.

4
ответ дан bitsdanceforme 24 August 2018 в 01:05
поделиться

Попробуйте заменить «код» на «pre». Предварительный тег в HTML отмечает текст как предварительно отформатированный, и все строки и пробелы будут отображаться точно так же, как вы их набираете.

1
ответ дан Edwin 24 August 2018 в 01:05
поделиться

Используя Java SE 1.6, похоже, что все идентификаторы UPPERCASE PRE - лучший способ сделать это в Javadoc:

/**
 * <PRE>
 * insert code as you would anywhere else
 * </PRE>
 */

- это самый простой способ сделать это.

Пример из javadoc, который я получил из метода java.awt.Event:

/**
 * <PRE>
 *    int onmask = SHIFT_DOWN_MASK | BUTTON1_DOWN_MASK;
 *    int offmask = CTRL_DOWN_MASK;
 *    if ((event.getModifiersEx() & (onmask | offmask)) == onmask) {
 *        ...
 *    }
 * </PRE>
 */

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

0
ответ дан Eugene_CD-adapco 24 August 2018 в 01:05
поделиться
  • 1
    Это ничего не добавляет к существующим ответам. – madth3 20 October 2012 в 01:18
  • 2
    madth3, ты прав. Мне показалось, что я видел разницу при использовании модификаторов нижнего и верхнего пределов UPPERCASE, но при втором взгляде это не похоже на это. Это может также иметь отношение к тому, как оно появилось на этой веб-странице, и как оно появляется в javadoc. – Eugene_CD-adapco 9 November 2012 в 01:43
  • 3
    чувствительный к регистру в теге html? – Jasonw 5 December 2012 в 09:37

Если вы разработчик Android, вы можете использовать:

<pre class=”prettyprint”>

TODO:your code.

</pre>

Чтобы довольно печатать ваш код в Javadoc с кодом Java.

2
ответ дан ifeegoo 24 August 2018 в 01:05
поделиться
  • 1
    Пожалуйста, объясните: что в инструментах Android должно сделать эту работу, учитывая проблемы, требующие тега @code? И какой компонент должен определить класс prettyprint? Android использует обычный Javadoc. – noamtm 14 February 2017 в 07:53
  • 2
    Xamarin / VS, Android Studio, или это не имеет значения? – tyblu 5 July 2017 в 18:14
  • 3
    @tyblu Android Studio работает, но Xamarin Studio / VS, возможно, не работает. Вы можете попробовать. – ifeegoo 17 July 2017 в 02:07

Я заключу свой примерный код с тегами <pre class="brush: java"></pre> и использую SyntaxHighlighter для опубликованных javadocs. Это не мешает IDE и делает опубликованные примеры кода красивыми.

0
ответ дан Jarek Przygódzki 24 August 2018 в 01:05
поделиться
  • 1
    подсветка спросила: stackoverflow.com/questions/1391614/… – Ciro Santilli 新疆改造中心 六四事件 法轮功 18 February 2015 в 18:59
  • 2
    С синтаксисом Highlighter вы должны загрузить скрипт и исправить css. Выглядит потрясающе, но вы должны поставить правильный путь к требуемым скриптам и css. Кроме того, если вы хотите использовать офлайн, необходимо соблюдать правильные пути. – Alex Byrth 26 August 2015 в 21:12
/**
 * <blockquote><pre>
 * {@code
 * public Foo(final Class<?> klass) {
 *     super();
 *     this.klass = klass;
 * }
 * }
 * </pre></blockquote>
 **/
  • <pre/> требуется для сохранения строк.
  • {@code должен иметь свою собственную строку
  • <blockquote/>, как раз для отступов.
public Foo(final Class<?> klass) {
    super();
    this.klass = klass;
}

UPDATE с JDK8

Минимальными требованиями для правильных кодов являются <pre/> и {@code}.

/**
 * test.
 *
 * <pre>{@code
 * <T> void test(Class<? super T> type) {
 *     System.out.printf("hello, world\n");
 * }
 * }</pre>
 */

дает

 <T> void test(Class<? super T> type) {
     System.out.printf("hello, world\n");
 }

И необязательное окружение <blockquote/> вставляет отступ.

/**
 * test.
 *
 * <blockquote><pre>{@code
 * <T> void test(Class<? super T> type) {
 *     System.out.printf("hello, world\n");
 * }
 * }</pre></blockquote>
 */

дает

     <T> void test(Class<? super T> type) {
         System.out.printf("hello, world\n");
     }

Вставка <p> или окружение с помощью <p> и </p> дает предупреждения.

9
ответ дан Jin Kwon 24 August 2018 в 01:05
поделиться

У меня было очень трудное время с включением конкретного примера кода в комментарий javadoc. Я хотел бы поделиться этим. Обратите внимание на следующее:

  • использование старого тега <code> - для предотвращения интерпретации фигурных скобок
  • использование «нового» {@code ...} - тега для получения дженерики, включенные в выход
  • экранирование знака @ в @Override через «{@literal @}Override», потому что генератор javadoc «наклоняется» из-за того, что @ идет непосредственно после открытия фигурной скобки
  • удалите одно пространство перед {@code и {@literal, чтобы компенсировать внутренние пространства и сохранить выравнивание

код javadoc:

/** this methods adds a specific translator from one type to another type. `
  * i.e.
  * <pre>
  * <code>new BeanTranslator.Builder()
  *   .translate(
  *     new{@code Translator<String, Integer>}(String.class, Integer.class){
  *      {@literal @}Override
  *       public Integer translate(String instance) {
  *         return Integer.valueOf(instance);
  *       }})
  *   .build();
  * </code>
  * </pre>
  * @param translator
  */

печатается как

new BeanTranslator.Builder()
  .translate(
    new Translator<String, Integer>(String.class, Integer.class){
      @Override
      public Integer translate(String instance) {
        return Integer.valueOf(instance);
      }})
  .build();
149
ответ дан leventov 24 August 2018 в 01:05
поделиться
  • 1
    Это работает, но я получаю предупреждение при запуске javadoc, выводящее это предупреждение & quot; предупреждение: {@code} в & lt; code & gt; & quot; – Shane Rowatt 24 February 2015 в 06:53
  • 2
    Это тот, который работал, принятый ответ не очень хорошо работает в моем затмении (4.6.2). – Eric Wang 17 May 2017 в 03:32
  • 3
    Интересно, почему все это необходимо, мой intellij 13 и более поздние работы отлично работают с кодом в принятом ответе. Это просто вопрос затмения? – bvdb 1 June 2018 в 09:46
  • 4
    Да, я также видел эту работу в IntelliJ 11 и позже. IntelliJ обрабатывает его правильно. К сожалению, Eclipse НЕ корректно отображает JavaDoc (состояние зависания) и игнорирует как новые строки, так и разрывы html. Я пытаюсь найти решение, которое хорошо работает в обеих IDE, так как они являются двумя из лучших IDE, используемых сегодня. – Michael M 5 June 2018 в 16:31

Я просто прочитал ссылку Javadoc 1.5 здесь , и только код с < и > должен быть заключен внутри {@code ...}. Вот простой пример:

 /** 
 * Bla bla bla, for example:
 *
 * <pre>
 * void X() {
 *    List{@code <String>} a = ...;
 *    ...
 * }
 * </pre>
 *
 * @param ...
 * @return ...
 */
 .... your code then goes here ...
1
ответ дан mljrg 24 August 2018 в 01:05
поделиться

Вам нужны теги <pre></pre> для разрывов строк и {@code ... } внутри них для дженериков. Но тогда не разрешается размещать открытую скобку в той же строке, что и тег <generic>, потому что тогда все будет отображаться на 1 строке снова.

Отображается на одной строке:

* ..
* <pre>
* {@code
* public List<Object> getObjects() {
*    return objects;
* }
* </pre>
* ..

Отображается с разрывами строк:

* ..
* <pre>
* {@code
* public List<Object> getObjects() 
* {
*    return objects;
* }
* </pre>
* ..

Еще одна странность в том, что при вставке закрывающей скобки {@code она отображается:

* ..
* <pre>
* {@code
*   public List<Object> getObjects() 
*   {
*     return objects;
*   }
* }
* </pre>
* ..

Выход:

public List<Object> getObjects() 
{
   return objects;
}
}
13
ответ дан Paŭlo Ebermann 24 August 2018 в 01:05
поделиться
  • 1
    Добро пожаловать на переполнение стека. Чтобы форматировать код в сообщениях, вы можете либо префикс его (в отдельном абзаце) четырьмя пробелами, либо окружать их обратными окнами (`` ... ``). Тебе не нужны теги <code> и <pre>. Я отредактировал ваш ответ в этом уме. – Paŭlo Ebermann 5 August 2011 в 04:24

У источника java есть много хороших примеров. Вот пример из главы «String.java»:

....
 * is equivalent to:
 * <p><blockquote><pre>
 *     char data[] = {'a', 'b', 'c'};
 *     String str = new String(data);
 * </pre></blockquote><p>
 * Here are some more examples of how strings can be used:
 * <p><blockquote><pre>
 *     System.out.println("abc");
 *     String cde = "cde";
 *     System.out.println("abc" + cde);
 *     String c = "abc".substring(2,3);
 *     String d = cde.substring(1, 2);
 * </pre></blockquote>
...
40
ответ дан Steve B. 24 August 2018 в 01:05
поделиться
  • 1
    Таким образом, <pre><blockquote>...</blockquote></pre> – Jin Kwon 21 August 2013 в 06:45
  • 2
    Скорее <p><blockquote><pre> </pre></blockquote></p> – masterxilo 13 June 2014 в 09:28
  • 3
    @JinKwon, к сожалению, это не всегда работает, а не в моем фрагменте кода :( добавление {@code в начале работы, даже если закрытие} не будет достигнуто – benez 17 February 2016 в 18:09
  • 4
    Похоже, что это работает для большинства кодов, но не имеет угловых скобок, таких как List<String>. Для этого я использую <pre>{@code ... }</pre>. – Daniel 28 August 2016 в 16:29

Существует значительная разница между <blockquote><pre>... и <pre>{@code..... Первый будет опускать объявления типов в generics, но последний сохранит его.

E.g.: List<MyClass> myObject = null; отображается как List myObject = null; с фр. и как List<MyClass> myObject = null; со вторым

3
ответ дан Tamas 24 August 2018 в 01:05
поделиться

Приложите многострочный код к тегам <pre></pre>.

21
ответ дан Zach Scrivena 24 August 2018 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: