Javadoc: Zeilenumbrüche ohne HTML-Tags?

81

Entschuldigung für eine wahrscheinliche FAQ-Frage, aber ich kann die Antwort einfach nicht finden.

Soweit ich mich an Eclipse erinnere, wird eine leere Zeile in einem Javadoc-Kommentar (in Javadoc-Popups in der Quelle) als Zeilenumbruch (mit zusätzlichem vertikalen Abstand) angezeigt.

In Netbeans ist dies jedoch nicht der Fall.

Kann ich Javadoc so konfigurieren, dass eine Leerzeile als Zeilenumbruch interpretiert wird?

Zusätzliche Frage: Kann ich das Standardverhalten von Netbeans (im Zusammenhang damit) für Javadoc-Popups in der Quelle überschreiben?

Ich spreche von:

Quelle

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

Eclipse-Interpretation

 Paragraph One

 Paragraph Two

Netbeans Interpretation

 Paragraph One Paragraph Two
java.is.for.desktop
quelle
1
Viele dieser Antworten sind jetzt veraltet (ersetzt) ​​durch NetBeans8.2. Siehe die Antwort von @fujy unten, es funktioniert perfekt.
Webel IT Australia - Upvoter

Antworten:

80

Es hat nichts mit Netbeans zu tun. Ich vermute, Sie sehen sich in einem Fall den Quellcode und in dem anderen die Ausgabe von Javadoc an. Zeilenumbrüche sind in HTML nicht von Bedeutung: Ergo werden sie in der Ausgabe nicht angezeigt . Wenn Sie einen Zeilenumbruch wünschen, verwenden Sie a <p>oder a <br>.

user207421
quelle
4
Wie ich in der Frage erwähnt, Verfinsterung nicht leere Zeilen wie Absätze berücksichtigt. Also meine Vermutung ist , dass es hat möglich sein , diese Konfiguration durch eine javadoc zu erreichen (Netbeans oder ohne).
java.is.for.desktop
Eclipse zeigt Ihnen den Quellcode, wie auch immer er formatiert ist. Netbeans 6.9.1 zeigt Ihnen auch den Quellcode, d. H. Es ignoriert auch keine Zeilenumbrüche. Wenn Sie jedoch die Ausgabe von Javadoc auf irgendeine Weise betrachten, wenn dies falsch wäre, bedeutet dies , Zeilenumbrüche nicht zu ignorieren.
user207421
40

Ich bin mir nicht sicher, ob dies für OPs Fall <pre></pre>hilfreich ist , aber ich habe mein Dokument umgelegt, damit NetBean meine Formatierung nicht durcheinander bringt. So wird es aussehen

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

Dies kommt der Anzeige neuer Zeilen im Textformat am nächsten. Ich verwende NetBeans 7.1.2. Auf diese Weise code formatwird das Dokument mit der Option nicht neu formatiert. Das Anzeigen des Dokuments in Hinweisen ist weiterhin formatiert.

Update: In Netbeans 8.x gibt es eine Option für die Code-Formatierung, um die Formatierung von Kommentaren zu deaktivieren.

AaA
quelle
13

In NetBeansVersion 8.2 wurde bereits eine Option getestet, mit der Sie neue Zeilen in Ihren Kommentaren beibehalten und / oder bei Bedarf ein <p>Tag zu Ihrem hinzufügen Javadockönnen

  • Nur aus dem ToolsMenü wählenOptions
  • Gehen Sie zur EditorRegisterkarte und dann zur FormattingRegisterkarte
  • Im LanguageMenü gewählt Java, und im CategoryMenü gewähltComments
  • Aktivieren Sie das Preserve New LinesKontrollkästchen im GeneralAbschnitt, wenn Sie neue Zeilen in Ihren Kommentaren beibehalten möchten. Dadurch bleiben neue Zeilen erhalten, ohne dass ein <p>Tag hinzugefügt wird
  • Aktivieren Sie das Generate "<p>" on Blank LinesKontrollkästchen im JavadocAbschnitt, wenn Sie auch ein <p>Tag hinzufügen möchten .

Geben Sie hier die Bildbeschreibung ein

fujy
quelle
2
Auf jeden Fall die beste Antwort für NetBeans 8.2. Einfach. Sie sollten es jedoch bearbeiten, um hinzuzufügen, dass es nur dann tatsächlich aktiviert wird, wenn Sie das Formatieren des Codes ausführen (mit vorhandenen Zeilenumbrüchen). Man muss vorsichtig sein, wenn es bereits einige <p>von Hand gibt, kann es manchmal <p>``<p>beim ersten Mal doppelt so viel hinzufügen . Danach funktioniert es wie erwartet.
Webel IT Australia - Upvoter
4

Ich stimme Ihnen zu, HTML gehört nicht in den Quellcode. Leider fand ich nicht viel Hilfe beim Googeln. Es ist eigentlich ganz einfach zu implementieren.

Hier ist das benutzerdefinierte Doclet, das Sie kompilieren und verwenden können:

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);
    }
}

Ein Beispiel für das Aufrufen mit 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
Roylaurie
quelle
2

JavaDoc zeigt an, wie die CSS-Stile definiert wurden. Sie können die mit Absatz-Tags verknüpften CSS-Stile folgendermaßen bearbeiten:

p {
    line-height: 25px;
}
adarshr
quelle
1
Vielen Dank, aber ich bin sicher, dass Netbeans eine leere Zeile überhaupt nicht als Absatz interpretiert (siehe "Netbeans-Interpretation" in meiner Frage). Ich meine: Sie können den Zeilenabstand nur definieren, wenn Sie Linien haben.
java.is.for.desktop
Hmm. Das habe ich gesehen. Aber nicht wirklich sicher, ob Netbeans eine Option zum Bearbeiten bietet.
Adarshr
2

Dies ist eine Pseudolösung
(die leider nur generiertes Javadoc betrifft, aber nicht die In-Source-Javadoc-Anzeige von Netbeans).

Geben Sie ein Stylesheet an, das Folgendes enthält:

div.block {
    white-space: pre;
}
java.is.for.desktop
quelle
0

Ich habe keine Ahnung, was Eclipse hier tut, aber wenn Sie dieses Verhalten im Allgemeinen (nicht nur eine IDE) möchten, müssen Sie möglicherweise stattdessen ein neues Doclet erstellen (das möglicherweise auf dem Standard-HTML-Doclet basiert) und dort ein <p>at einfügen jede leere Zeile oder so.

Paŭlo Ebermann
quelle