Wenn der Java-Code-Formatierer von Eclipse Blockkommentare ignoriert


78

Gibt es eine Möglichkeit, den in Eclipse integrierten Java-Code-Formatierer dazu zu bringen, Kommentare zu ignorieren? Immer wenn ich es laufen lasse, dreht es sich um:

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

das mögen:

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

Ich habe bereits mit den Einstellungen Windows> Einstellungen> Java> Codestil> Formatierer herumgespielt, kann jedoch keine finden, um die Formatierung der Kommentare beizubehalten. Ich verwende Eclipse 3.4.0.


Es ist genau dort in der Formatter-Konfiguration, ich weiß nicht, wie Sie es vermissen. Bearbeiten Sie das Profil, es gibt ein Dialogfeld mit 8 Registerkarten, die letzte Registerkarte dient zur Formatierung von Kommentaren.
Skaffman

Ich sehe die Registerkarte "Kommentar", aber die Formatierungsprobleme treten auf, unabhängig davon, welche Kombination von Kontrollkästchen ich verwende.
Pops


Ich habe das gleiche Problem mit Scala in Eclipse, aber die folgenden Lösungen sind Java-spezifisch, da die Registerkarte Scala-Code-Formatierer verschiedene Optionen bietet. Gibt es eine Möglichkeit, die Neuformatierung von Kommentaren für Scala zu deaktivieren?
Glenn Strycker

Antworten:


40

Update 2010, wie vom OP und in dieser Antwort angegeben , reicht die spezielle Zeichenfolge // @formatter:offin Eclipse 3.6 aus.

Es war zum Zeitpunkt der Frage nicht verfügbar .


Ursprüngliche Antwort: Juni 2009, Eclipse 3.4 / 3.5

Mit Java Formatter ( Windows > Preferences > Java > Code Style > Formatter) können Sie ein neues Formatter-Profil erstellen.

Auf der Registerkarte "Kommentare" (in eclipse3.5) können Sie sicherstellen, dass im " Javadoc comment settings" die Option " Format HTML tags" deaktiviert ist .
Überprüfen Sie auch das " Never join lines" im General settingsAbschnitt " ".

Dann sollte Ihr Kommentar wie folgt geschrieben werden:

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

Hinweis: Ich habe einen Javadoc- Kommentar abgegeben und keinen einfachen Kommentar, da ich glaube, dass ein Kommentar mit so viel Text besser vor einer Methode platziert werden kann. Außerdem haben Javadoc-Abschnitte mehr Formatierungsparameter zum Spielen.
Wenn es vor einem Verfahren (true Javadoc) ist, die HTML - Tags <dl>, <dt>und<dd> es wird helfen , richtig Ansicht innerhalb der Javadoc zu präsentieren.


1
Der relevante Teil dieser Antwort war für mich, dass die HTML-Tags NICHT automatisch bei Zeilenumbrüchen und dergleichen eingefügt werden. Wahrscheinlich für die meisten offensichtlich, aber ich wusste nicht, dass ich Dinge wie <br> s von Hand codieren musste, bis ich es hier sah.
Pops

@ Lord Torgamus: Sie müssen nicht nur diese Tags hinzufügen, sondern der erste Satz erfordert eine Periode und ein Leerzeichen vor dem <br />! (siehe bugs.sun.com/bugdatabase/view_bug.do?bug_id=4165985 )
VonC

Ich habe das gleiche Problem mit Scala in Eclipse, aber die folgenden Lösungen sind Java-spezifisch, da die Registerkarte Scala-Code-Formatierer verschiedene Optionen bietet. Gibt es eine Möglichkeit, die Neuformatierung von Kommentaren für Scala zu deaktivieren?
Glenn Strycker

1
Dies beantwortet nicht die gestellte Frage
Enerccio

182

Es gibt eine andere Lösung, mit der Sie die Formatierung bestimmter Blockkommentare unterdrücken können. Verwenden Sie /*-(beachten Sie den Bindestrich) am Anfang des Blockkommentars, und die Formatierung wird nicht beeinflusst, wenn Sie den Rest der Datei formatieren.

/ * -
 * Hier ist ein Blockkommentar mit einigen ganz besonderen
 * Formatierung, die Einzug (1) ignorieren soll.
 * *
 * einer
 * zwei
 * drei
 * /

Quelle: http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141999.html#350


Das habe ich noch nie gesehen, auch nicht im Zusammenhang. +1!
Pops

16
Leider funktioniert dies nur mit "regulären" Blockkommentaren, nicht mit Javadoc-Kommentaren.
Pops

Perfekt für Version: Juno Service Release 1. Danke, mein Retter!
Hong

1
und selbst dies ist nützlich, wenn Sie einen eigenen Formatierer haben, der Sterne für jeden Zeilenstart anfügt, und Sie nicht möchten, dass der Standardformatierer dies tut, dann könnten Sie / * - ...... * / verwenden, was sehr nützlich ist
Shiva Komuravelly

Funktioniert noch im Jahr 2020 (Version: 2020-06 (4.16.0)) :-) sehr schön
Rustyx

25

Ich habe gerade von einem Kollegen erfahren, dass Eclipse spezielle Formatierungs-Tags anbietet, die dafür verwendet werden können:

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

Beachten Sie, dass Sie diese Funktion möglicherweise manuell über das Menü Einstellungen → Java> Codestil> Formatierer aktivieren müssen, auf Bearbeiten klicken , die Registerkarte Aus / Ein-Tags auswählen und die Option Aus / Ein-Tags aktivieren ( Quelle ) aktivieren müssen .

Ein kurzes Google für die Zeichenfolge @formatter: off brachte mich zu dieser anderen SO-Antwort , in der diese Funktion im Zusammenhang mit der Deaktivierung des Formatierers für Codeblöcke erwähnt wurde. Ich habe bestätigt, dass es auch für Zeilenkommentare, "normale" Blockkommentare und Javadoc-Blockkommentare funktioniert.


Wie haben Sie es für JavaDoc-Kommentare gemacht? Ich habe festgestellt, dass ich vor und nach den JavaDoc-Kommentaren Zeilenkommentare einfügen musste, damit dies funktioniert, wie Sie es für den Blockkommentar in dieser Antwort getan haben. Ich hatte gehofft, ich könnte die Formatierung nur für einen Abschnitt eines JavaDoc-Kommentars deaktivieren.
Michael Scheper

@MichaelScheper Es ist eine Weile her und ich erinnere mich nicht genau ... hast du VonCs Rat ausprobiert ?
Pops

Dies ist hervorragend, da Eclipse angewiesen wird, auch keinen Code zu formatieren. Nützlich, wenn Sie Ihre eigene Formatierung beibehalten möchten.
Martin Wickman

18

Eine andere Möglichkeit ist die Verwendung von HTML <pre> in Javadoc:

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

Zumindest neige ich so dazu, meine ASCII-Grafik in Quellcode-Kommentare einzubetten :)


1
Bitte beachten Sie, dass Eclipse den Inhalt des Tags <pre> </ pre> formatiert, wenn es als Java-Code angezeigt wird (es sei denn, Sie deaktivieren Fenster-> Einstellungen-> Java-> Codestil-> Formatierer-> Bearbeiten ... [Schaltfläche] ] -> Kommentare [Tab] -> "Java-Code-Schnipsel in '
Pre'

9

Umgeben Sie den spezifischen Text mit <pre> </pre>Tags.


2

In Eclipse 3.4: Einstellungen Java-> Codestil-> Formatierer, dann Profil bearbeiten, Registerkarte Kommentare. Dort gibt es eine Reihe von Optionen zum Steuern der Kommentarformatierung.


1

Wenn Sie die Formatierung in Eclipse unterdrücken möchten, können Sie Inhalte, die NICHT FORMATIERT werden sollen, jederzeit in <pre>UNFORMATTED CONTENT</pre>Tags einbinden . Der Javadoc-Formatierer erkennt dieses Tag und lässt alles zwischen diesen Tags unformatiert.

Vorteile:

  • Der Rest von Javadoc ist noch formatiert
  • Die HTML-Ausgabe von Javadoc wird aufgrund von Pre-Tags ebenfalls "unformatiert"

Nachteile:

  • Ich sehe keinen

1

Eine Problemumgehung besteht darin, ein Pre- Tag für die Kommentare hinzuzufügen, die Eclipse nicht formatieren soll

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

2
Stimmt ... aber ich sehe nicht, was dies zu dem beiträgt, was Philip oder Thomas Keller bereits vor Jahren in ihren Antworten gesagt haben.
Pops

1

Probier diese. Das hat bei mir funktioniert. Mit dem Java-Formatierer (Windows> Einstellungen> Java> Codestil> Formatierer) können Sie aus dem vorhandenen ein neues Formatierungsprofil erstellen und es dann bearbeiten.

Wenn Eclipse dies nicht zulässt, erstellen Sie eine neue und speichern Sie diese. Geben Sie hier die Bildbeschreibung ein


Dies ist die Antwort mit der letzten Eclipse: Sie können jetzt jede Kommentarformatierung (Javadoc, Block oder Inline) deaktivieren.
Tristan

0

Es ist sprachabhängig.

Wenn Sie beispielsweise mit Javascript arbeiten, gehen Sie zu "Fenster -> Einstellungen -> Javascript -> Codestil -> Formatierer" und bearbeiten Sie die Formatierungsoptionen.

Bearbeiten (Änderungen in OP-Fragen widerspiegeln)

Um die Java-Code-Formatierung zu bearbeiten, gehen Sie zu "Fenster -> Einstellungen -> Java -> Codestil -> Formatierer".

Oben im Panel sehen Sie

Aktives Profil:
Eclipse [eingebaut]

Von dort haben Sie eine Schaltfläche rechts, "Bearbeiten", und zwei unten, "Neu ..." und "Importieren ...". Ich würde empfehlen, das vorhandene Profil zu bearbeiten.

Im Dialogfeld "Profil bearbeiten" befinden sich oben eine Reihe von Registerkarten. Die letzte Registerkarte ist "Kommentare". Um die Kommentarformatierung vollständig zu deaktivieren, deaktivieren Sie "Javadoc-Kommentarformatierung aktivieren", "Blockkommentarformatierung aktivieren", "Zeilenkommentarformatierung aktivieren" und "Kopfkommentarformatierung aktivieren".


0

Sie können dies unter Windows - Einstellungen - Java - Codestil - Formatierer ändern. Klicken Sie dann auf die Schaltfläche Bearbeiten .., suchen Sie nach Kommentaren und wählen Sie die Option Niemals verbinden.

Dann sollte es OK sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.