Ich habe Java-Code mit SQL-Anweisungen, die als Java-Zeichenfolgen geschrieben sind (bitte keine OR / M-Flammen, das eingebettete SQL ist das, was es ist - nicht meine Entscheidung).
Ich habe die SQL-Anweisungen semantisch in mehrere verkettete Zeichenfolgen über mehrere Codezeilen aufgeteilt, um die Wartung zu vereinfachen. Also statt so etwas wie:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Ich habe so etwas wie:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
Dieser Stil erleichtert das Lesen und Verwalten von SQL (IMHO) erheblich, insbesondere bei größeren Abfragen. Zum Beispiel kann ich meinen Editor in den "Überschreib" -Modus versetzen und den Text ziemlich einfach an Ort und Stelle ändern.
Beachten Sie, dass dieses Problem über das jeweilige Beispiel von SQL hinaus verallgemeinert wird. Jeder Code, der mit einer vertikalen Formatierung geschrieben wurde, insbesondere tabellarische Konstrukte, kann von einem hübschen Drucker zerstört werden.
Einige Projektmitglieder verwenden jetzt den Eclipse-Editor und die semantische Formatierung wird häufig zerstört, wenn sie eine gesamte Quelldatei formatieren.
Gibt es eine Möglichkeit, Eclipse anzuweisen, bestimmte Quellzeilen in Bezug auf die Formatierung zu ignorieren?
Ich suche nach einem speziellen Kommentar, der den Eclipse-Formatierer umschaltet. Im Idealfall kann ein solcher Kommentar so konfiguriert werden, dass er von uns ausgewählt wird, und andere Formatierer können so programmiert werden, dass er ihn ebenfalls berücksichtigt:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
Eine "Lösung" besteht natürlich darin , unsere Teammitglieder auf einen externen Formatierer wie Jalopy oder JIndent standardisieren zu lassen , aber darum geht es bei dieser Frage nicht (auch nicht um meine Entscheidung für dieses Projekt): Ich suche speziell nach einem Weg zu Vermeiden Sie den Eclipse-Formatierer auf Ad-hoc-Basis.
Im Idealfall kann ich mit einer Lösung Anweisungen für den Eclipse-Formatierer einfügen, ohne dass Teammitglieder, die Eclipse verwenden, eine IDE-Neukonfiguration durchführen müssen (außer möglicherweise einen formatunabhängigen Befehlskommentar zu wählen: STOP-ECLIPSE-FORMATTING
→ STOP-FORMATTING
).
quelle
Antworten:
Mit Eclipse 3.6 können Sie die Formatierung deaktivieren, indem Sie einen speziellen Kommentar wie z
Die Ein / Aus-Funktionen müssen in den Eclipse-Einstellungen aktiviert sein : Java > Code Style > Formatter. Klicken Sie auf Edit, Off/On Tagsaktivieren Enable Off/On tags.
Es ist auch möglich, die magischen Zeichenfolgen in den Einstellungen zu ändern. Lesen Sie hier die Eclipse 3.6-Dokumente .
Mehr Informationen
Java > Code Style > Formatter > Edit > Off/On Tags
Mit dieser Einstellung können Sie ein zu deaktivierendes Tag und ein Tag zum Aktivieren des Formatierers definieren (siehe Registerkarte Aus / Ein-Tags in Ihrem Formatierungsprofil):
Sie müssen auch die Flags von aktivieren Java Formatting
quelle
AFAIK von Eclipse 3.5 M4 im Formatierer verfügt über die Option "Niemals Zeilen verbinden", die die Zeilenumbrüche der Benutzer beibehält. Vielleicht macht das was du willst.
Sonst gibt es diesen hässlichen Hack
quelle
Siehe diese Antwort auf SO .
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.Quelle: Dokumentation bei Oracle .
quelle
Anstatt die Formatierung zu deaktivieren, können Sie sie so konfigurieren, dass bereits umbrochene Zeilen nicht verbunden werden. Ähnlich wie bei Jitter, hier für Eclipse STS:
Eigenschaften → Java-Codestil → Formatierer → Projektspezifische Einstellungen aktivieren ODER Arbeitsbereichseinstellungen konfigurieren → Bearbeiten → Zeilenumbruch (Registerkarte) → Aktivieren Sie "Niemals bereits umbrochene Zeilen verbinden".
Speichern, anwenden.
quelle
Sie müssen die Möglichkeit aktivieren, die Formatierungs-Tags hinzuzufügen. In der Menüleiste gehen Sie zu:
Windows → Preferences Java → Code Style → Formatter
Drücken Sie die EditTaste. Wählen Sie die letzte Registerkarte. Beachten Sie das Kontrollkästchen Ein / Aus und aktivieren Sie sie mit einem Kontrollkästchen.
quelle
Wenn Sie das Pluszeichen am Zeilenanfang einfügen, wird es anders formatiert:
quelle
Ich verwende String-Teile mit fester Breite (mit Leerzeichen aufgefüllt), um zu vermeiden, dass der Formatierer meine SQL-String-Einrückung durcheinander bringt. Dies führt zu gemischten Ergebnissen und funktioniert nicht, wenn Leerzeichen nicht wie in SQL ignoriert werden, kann aber hilfreich sein.
quelle
Beenden Sie jede Zeile mit einem doppelten Schrägstrich "//". Dadurch wird verhindert, dass die Sonnenfinsternis sie alle auf dieselbe Linie bewegt.
quelle
Alternative Methode: In Eclipse 3.6 gibt es unter "Zeilenumbruch" und dann "Allgemeine Einstellungen" die Option "Niemals bereits umbrochene Zeilen verbinden". Dies bedeutet, dass der Formatierer lange Zeilen umbricht, aber bereits vorhandene Umbrüche nicht rückgängig macht.
quelle
@xpmatteo hat die Antwort auf das Deaktivieren von Codeteilen. Darüber hinaus sollten die Standardeinstellungen für Eclipse so eingestellt werden, dass nur bearbeitete Codezeilen anstelle der gesamten Datei formatiert werden.
Dies hätte verhindert, dass dies überhaupt passiert, da Ihre Mitarbeiter Code neu formatieren, den sie nicht wirklich geändert haben. Dies ist eine gute Vorgehensweise, um Pannen zu vermeiden, die Unterschiede in Ihrer Quellcodeverwaltung unbrauchbar machen (wenn eine gesamte Datei aufgrund geringfügiger Unterschiede bei den Formateinstellungen neu formatiert wird).
Es würde auch die Neuformatierung verhindern, wenn die Option Ein / Aus-Tags deaktiviert wäre.
quelle
Die Phantomkommentare, die hinzufügen,
//
wo Sie neue Zeilen möchten, sind großartig!Mit @formatter: off wird dem Editor eine Referenz aus dem Code hinzugefügt. Der Code sollte meiner Meinung nach niemals solche Verweise haben.
Die Phantomkommentare (//) funktionieren unabhängig vom verwendeten Formatierungswerkzeug. Unabhängig von Eclipse oder InteliJ oder dem von Ihnen verwendeten Editor. Dies funktioniert sogar mit dem sehr schönen Google Java-Format
Die Phantomkommentare (//) funktionieren in Ihrer gesamten Anwendung. Wenn Sie auch Javascript haben und vielleicht so etwas wie JSBeautifier verwenden . Sie können einen ähnlichen Codestil auch in Javascript verwenden.
Eigentlich möchten Sie wahrscheinlich richtig formatieren ? Sie möchten gemischte Tabulatoren / Leerzeichen und nachfolgende Leerzeichen entfernen. Sie möchten die Zeilen gemäß dem Codestandard einrücken. Was Sie nicht wollen, ist eine lange Schlange. Das und nur das gibt dir der Phantomkommentar!
quelle
Dieser Hack funktioniert:
Ich würde vorschlagen, den Formatierer nicht zu verwenden. Schlechter Code sollte schlecht aussehen, nicht künstlich gut. Guter Code braucht Zeit. Qualität kann man nicht betrügen. Die Formatierung ist Teil der Quellcodequalität.
quelle