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 ).

2voto

Tomas Bjerre Punkte 2828

Das Phantom kommentiert und fügt hinzu // wo Sie neue Linien wollen, sind großartig!

  1. Das @formatter: off fügt eine Referenz vom Code zum Editor hinzu. Der Code sollte meiner Meinung nach niemals solche Verweise haben.

  2. Die Phantomkommentare (//) funktionieren unabhängig von dem verwendeten Formatierungswerkzeug. Unabhängig von Eclipse oder InteliJ oder welchem Editor Sie auch immer arbeiten. Dies funktioniert sogar mit dem sehr schönen Google Java Format

  3. Die Phantomkommentare (//) werden in Ihrer gesamten Anwendung funktionieren. Wenn Sie auch Javascript haben und vielleicht so etwas verwenden wie JSBeautifier . Sie können ähnliche Code-Stil auch in der Javascript haben.

  4. Wahrscheinlich wollen Sie die Formatierung oder? Sie wollen gemischte Tabulatoren/Leerzeichen und Leerzeichen am Ende entfernen. Sie wollen die Zeilen entsprechend dem Code-Standard einrücken. Was Sie NICHT wollen, ist eine lange Schlange. Das, und nur das, gibt Ihnen der Phantomkommentar!

0voto

Damien Punkte 1121

Nicht so hübsch, aber mit den Standardeinstellungen und auch für die erste Zeile funktioniert es:

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

-4voto

Thomas Jung Punkte 31524

Dieser Hack funktioniert:

String x = "s" + //Formatter Hack
    "a" + //
    "c" + //
    "d";

Ich würde vorschlagen, den Formatierer nicht zu verwenden. Schlechter Code sollte schlecht aussehen, nicht künstlich gut. Guter Code braucht Zeit. Bei der Qualität kann man nicht mogeln. Die Formatierung ist Teil der Qualität des Quellcodes.

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