530 Stimmen

Wie schaltet man den Eclipse-Code-Formatierer für bestimmte Abschnitte von Java-Code aus?

Ich habe einen Java-Code mit SQL-Anweisungen, die als Java-Strings geschrieben sind (bitte keine OR/M-Flamewars, das eingebettete SQL ist, was es ist - nicht meine Entscheidung).

Ich habe die SQL-Anweisungen semantisch in mehrere verkettete Zeichenketten über mehrere Codezeilen aufgeteilt, um die Wartung zu erleichtern. Anstatt also etwas wie:

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";

Ich habe etwas wie:

String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";

Dieser Stil macht das SQL viel einfacher zu lesen und zu pflegen (IMHO), besonders bei größeren Abfragen. Ich kann zum Beispiel meinen Editor in den "Überschreibmodus" versetzen und den Text an Ort und Stelle recht einfach ändern.

Beachten Sie, dass dieses Problem über das spezielle Beispiel von SQL hinausgeht. Jeder Code, der mit einer vertikalen Formatierung geschrieben wird, insbesondere Tabellenkonstrukte, ist anfällig für die Zerstörung durch einen hübschen Drucker.

Nun verwenden einige Projektmitglieder den Eclipse-Editor und die semantische Formatierung wird oft zerstört, wenn sie eine ganze Quelldatei formatieren.

Gibt es eine Möglichkeit, Eclipse anzuweisen, bestimmte Quelltextzeilen in Bezug auf die Formatierung zu ignorieren?

Ich suche so etwas wie einen speziellen Kommentar, der den Eclipse-Formatierer umschaltet. Idealerweise könnte ein solcher Kommentar so konfiguriert werden, dass er so lautet, wie wir es wünschen, und andere Formatierer könnten so programmiert werden, dass sie ihn ebenfalls berücksichtigen:

// STOP-ECLIPSE-FORMATTING
String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
// START-ECLIPSE-FORMATTING

Eine "Lösung" besteht natürlich darin, dass unsere Teammitglieder einen externen Formatierer wie Vordach o JIndent aber darum geht es in dieser Frage nicht (und auch nicht um meine Entscheidung zu diesem Projekt): Ich bin speziell auf der Suche nach einer Möglichkeit, den Eclipse-Formatierer ad hoc zu umgehen.

Idealerweise erlaubt mir eine Lösung, Anweisungen für den Eclipse-Formatierer einzufügen ohne dass Teammitglieder, die Eclipse verwenden, die IDE neu konfigurieren müssen (abgesehen von der Möglichkeit, einen formatierungsunabhängigen Befehlskommentar zu wählen: STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING ).

927voto

xpmatteo Punkte 10857

In Eclipse 3.6 können Sie die Formatierung ausschalten, indem Sie einen speziellen Kommentar einfügen, etwa

// @formatter:off
...
// @formatter:on

Die Ein/Aus-Funktionen müssen in den Eclipse-Einstellungen aktiviert werden: Java > Code Style > Formatter . Klicken Sie auf Edit , Off/On Tags aktivieren Enable Off/On tags .

Es ist auch möglich, die magischen Zeichenfolgen in den Einstellungen zu ändern - Hier finden Sie die Eclipse 3.6-Dokumente .

Mehr Informationen

Java > Code Style > Formatter > Edit > Off/On Tags

Mit dieser Einstellung können Sie ein Tag zum Deaktivieren und ein Tag zum Aktivieren des Formatierers festlegen (siehe die Registerkarte Aus/Ein-Tags in Ihrem Formatiererprofil):

enter image description here

Sie müssen auch die Flags aus Java Formatting

63voto

jitter Punkte 52721

AFAIK ab Eclipse 3.5 M4 hat der Formatierer eine Option "Never Join Lines", die die Zeilenumbrüche des Benutzers beibehält. Vielleicht tut das, was Sie wollen.

Andernfalls gibt es diesen hässlichen Hack

String query = //
    "SELECT FOO, BAR, BAZ" + //
    "  FROM ABC"           + //
    " WHERE BAR > 4";

40voto

Renaud Punkte 15064

Ver diese Antwort auf SO .

Es gibt eine weitere 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 beeinträchtigt, wenn Sie den Rest der Datei formatieren.

/*-
 * Here is a block comment with some very special
 * formatting that I want indent(1) to ignore.
 *
 *    one
 *        two
 *            three
 */

Quelle: Dokumentation bei Oracle .

31voto

ilinca Punkte 1333

Anstatt die Formatierung auszuschalten, können Sie sie so konfigurieren, dass bereits umbrochene Zeilen nicht verbunden werden. Ähnlich wie die Antwort von Jitter, hier ist für Eclipse STS:

Eigenschaften Java Code Style Formatter Aktivieren Sie projektspezifische Einstellungen ODER Konfigurieren Sie die Arbeitsbereichseinstellungen Bearbeiten Sie den Zeilenumbruch (Registerkarte) aktivieren Sie "Niemals bereits umbrochene Zeilen verbinden".

Speichern, anwenden.

enter image description here

16voto

ZilWerks Punkte 169

Sie müssen die Möglichkeit aktivieren, die Formatierungs-Tags hinzuzufügen. Gehen Sie in der Menüleiste zu:

Windows Preferences Java Code Style Formatter

Drücken Sie die Edit Schaltfläche. Wählen Sie die letzte Registerkarte. Beachten Sie das Feld Ein/Aus und aktivieren Sie es mit einem Kontrollkästchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X