Javadoc: разрывы строк без HTML-тегов?

#java #netbeans #comments #javadoc

#java #netbeans #Комментарии #Javadoc

Вопрос:

Извините за вероятный вопрос типа FAQ, но я просто не могу найти ответ.

Насколько я помню Eclipse, пустая строка в комментарии Javadoc отображается (во всплывающих окнах Javadoc с исходным кодом) как разрыв строки (с дополнительным вертикальным интервалом).

Однако в Netbeans это не так.

Могу ли я настроить Javadoc для интерпретации пустой строки как разрыва строки?

Дополнительный вопрос: Могу ли я переопределить поведение Netbeans по умолчанию (связанное с этим) для всплывающих окон Javadoc в исходном коде?

Я говорю о том, что:

Источник

 /**
 * Paragraph One
 *
 * Paragraph Two
 */
 void someMethod() { }
  

Интерпретация Eclipse

  Paragraph One

 Paragraph Two
  

Интерпретация Netbeans

  Paragraph One Paragraph Two
  

Комментарии:

1. Многие из этих ответов в настоящее время устарели (заменены) NetBeans8.2, смотрите Ответ от @fujy ниже, он работает отлично.

Ответ №1:

Это не имеет никакого отношения к Netbeans. Я подозреваю, что в одном случае вы просматриваете исходный код, а в другом — выходные данные Javadoc. Новые строки не имеют значения в HTML: следовательно, на выходе они отображаться не будут. Если вам нужен перевод строки, используйте <p> или a <br> .

Комментарии:

1. Как я упоминал в вопросе, Eclipse рассматривает пустые строки как абзацы. Итак, я предполагаю, что должно быть возможно достичь этого с помощью некоторой конфигурации javadoc (Netbeans или без).

2. Eclipse показывает вам исходный код в том виде, в каком он отформатирован. Netbeans 6.9.1 также показывает вам исходный код, то есть он также не игнорирует разрывы строк. Однако, если вы просматриваете выходные данные Javadoc любым способом, если было бы неверно, это означает, что не следует игнорировать разрывы строк.

Ответ №2:

Я не уверен, помогает ли это в случае OP, однако я поместил <pre></pre> вокруг своего документа, чтобы netbean не испортил мое форматирование. Таким образом, это будет выглядеть

 /**
 * <pre>
 * Paragraph One
 *
 * Paragraph Two
 * </pre>
 */
  

Это ближе всего к отображению новых строк в текстовом формате. Я использую NetBeans 7.1.2. Таким образом, использование code format опции не приведет к переформатированию документа. Отображение документа в подсказках по-прежнему отформатировано.

Обновление: в Netbeans 8.x в разделе форматирование кода есть опция, позволяющая отключить форматирование комментариев.

Ответ №3:

В NetBeans уже есть опция, протестированная в версии 8.2, которая позволяет вам сохранять новые строки в ваших комментариях и / или добавлять <p> тег к вашим Javadoc комментариям, если это необходимо

  • Просто из Tools меню выбрал Options
  • Перейдите на Editor вкладку, затем Formatting tab
  • В Language меню выбрал Java , а в Category меню выбрал Comments
  • Установите Preserve New Lines флажок в General разделе, если вы хотите сохранить новые строки в своих комментариях. Это сохранит новые строки без добавления <p> тега
  • Установите Generate "<p>" on Blank Lines флажок в Javadoc разделе , если вы также хотите добавить <p> тег.

введите описание изображения здесь

Комментарии:

1. Определенно лучший ответ с использованием NetBeans 8.2. Легко. Но вам следует, пожалуйста, отредактировать это, добавив, что на самом деле это срабатывает только тогда, когда вы выполняете форматирование кода (с существующими разрывами строк). Нужно быть осторожным, если некоторые из них уже есть <p> вручную, иногда это может привести к удвоению <p>``<p> с первого раза. После этого все работает так, как ожидалось.

Ответ №4:

Я согласен с вами, HTML не место в исходном коде. К сожалению, я не нашел большой помощи в поиске в Google для этого. На самом деле это довольно просто реализовать.

Вот пользовательский документ, который вы можете скомпилировать и использовать:

 import com.sun.javadoc.*;
import com.sun.tools.doclets.standard.*;

/**
 * Formats text-only comments with HTML.
 */
@SuppressWarnings("restriction")
public final class TextDoclet {
    private static final Pattern NEWLINE_REGEX = Pattern.compile("\n");
    private static final String BR = "<br/>n";

    public static boolean start(RootDoc rootDoc) {
        for ( ClassDoc classdoc : rootDoc.classes())
            classdoc.setRawCommentText(formatText(classdoc.getRawCommentText()));

        return Standard.start(rootDoc);     
    }

    private static String formatText(String text) {
        return NEWLINE_REGEX.matcher(text).replaceAll(BR);
    }
}
  

Пример того, как вызвать его с помощью javadoc:

 javadoc -docletpath ~/project/text-doclet/target/text-doclet-1.0.0-SNAPSHOT.jar -doclet com.myorg.textdoclet.TextDoclet -sourcepath ~/project/myapp/src/main/java -subpackages com.myorg.myapp
  

Ответ №5:

JavaDoc отображает способ определения стилей CSS. Для этого вы могли бы отредактировать стили CSS, связанные с тегами абзаца:

 p {
    line-height: 25px;
}
  

Комментарии:

1. Спасибо, но я уверен, что Netbeans вообще не интерпретирует пустую строку как абзац (см. «Интерпретация Netbeans» в моем вопросе). Я имею в виду: вы можете определить межстрочный интервал, только если у вас есть строки.

2. Хм. Я это видел. Но не совсем уверен, предоставляет ли Netbeans возможность редактировать это.

Ответ №6:

Это псевдо-решение
(которое, к сожалению, влияет только на сгенерированный javadoc, но не влияет на отображение javadoc в исходном коде Netbeans).

Укажите таблицу стилей, содержащую следующее:

 div.block {
    white-space: pre;
}
  

Ответ №7:

Я понятия не имею, что здесь делает Eclipse, но если вы хотите такого поведения в целом (не только в IDE), возможно, вам придется создать новый документ (который может быть основан на документе HTML по умолчанию), вставляя <p> в каждую пустую строку или что-то подобное.