Ich bin daran interessiert, mehr über die verfügbaren Optionen für hochwertige, eigenständige Quellcode-Formatierer für Java zu erfahren .
Der Formatierer muss eigenständig sein, dh er muss einen "Stapel" -Modus unterstützen , der von einer bestimmten Entwicklungsumgebung entkoppelt ist . Idealerweise sollte es auch von einem bestimmten Betriebssystem unabhängig sein . Daher ist ein integrierter Formatierer für die IDE du jour hier von geringem Interesse (es sei denn, diese IDE unterstützt den Aufruf von Formatierern im Batch-Modus, möglicherweise über die Befehlszeile). Ein in Closed-Source-C / C ++ geschriebener Formatierer, der beispielsweise nur unter Windows ausgeführt wird, ist nicht ideal, aber etwas interessant.
Ein "Formatierer" (oder "Verschönerer") ist nicht dasselbe wie ein "Stilprüfer". Ein Formatierer akzeptiert Quellcode als Eingabe, wendet Stilregeln an und erzeugt gestalteten Quellcode, der semantisch dem ursprünglichen Quellcode entspricht. Syntaktische Änderungen beschränken sich auf Dinge wie das Ändern des Codelayouts wie das Ändern von Leerzeichen oder das Organisieren von import
Anweisungen. Wenn überhaupt, wird nur sehr wenig anderes Refactoring durchgeführt. Ein Stilprüfer wendet auch Stilregeln an, meldet jedoch einfach Regelverstöße, ohne geänderten Quellcode als Ausgabe zu erzeugen . Das Bild sieht also so aus:
Formatierer (erzeugt modifizierten Quellcode, der den Stilregeln entspricht)
Quellcode lesen → Styling-Regeln anwenden → Gestylten Quellcode schreiben
Style Checker (erzeugt keinen geänderten Quellcode)
Quellcode lesen → Styling-Regeln anwenden → Regelverletzungen schreiben
Weitere Erläuterungen
Lösungen müssen hochgradig konfigurierbar sein. Ich möchte in der Lage sein, meinen eigenen Stil anzugeben und nicht einfach aus einer voreingestellten Liste auszuwählen.
Außerdem suche ich keinen in Java geschriebenen Allzweck-Pretty-Drucker, der viele Dinge hübsch drucken kann. Ich möchte Java-Code formatieren.
Ich bin auch nicht unbedingt an einem einheitlichen Formatierer für viele Sprachen interessiert . Ich nehme an, es wäre schön, wenn eine Lösung andere Sprachen als Java unterstützen würde, aber das ist keine Voraussetzung.
Darüber hinaus Tools , die nur Code - Hervorhebung durchzuführen sind rechts aus .
Ich bin auch nicht an einem Webdienst interessiert. Ich möchte ein Tool, das ich lokal ausführen kann.
Schließlich müssen Lösungen nicht auf Open Source, Public Domain, Shareware, freie Software, Werbung oder irgendetwas anderes beschränkt sein. Alle Formen der Lizenzierung sind akzeptabel .
quelle
Antworten:
JIndent (Commercial) macht was Sie wollen:
http://www.jindent.com/
Ich habe in der Vergangenheit auch Jalopy verwendet, es ist Open Source:
http://jalopy.sourceforge.net/
EDIT: Ich werde bemerken, dass Jalopy ziemlich alt ist und es keine aktuellen Updates zu geben scheint. Ich bin mir nicht ganz sicher, ob es mit Java 5/6 funktioniert. Vielleicht möchten Sie sich stattdessen Jacobe ansehen:
http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html
Eine ausführlichere Liste der Formatierer finden Sie hier auf der Website von Roedy Green:
http://mindprod.com/jgloss/beautifier.html
quelle
Sie können Eclipse Reformatter auch über die Befehlszeile ausführen.
Hier ist die Eclipse-Dokumentation der Funktion
Zuerst müssen Sie eine projektspezifische Konfigurationsdatei mit Ihren Java-Code-Formatierungseinstellungen erstellen.
Speichern Sie dann
{projectDirectory}/.settings/org.eclipse.jdt.core.prefs
an einem anderen Ort.Jetzt rufen Sie den Formatierer auf.
"c:\path\to\eclipse\eclipse.exe" -vm "C:\path\to\jdk\bin\java.exe" -application org.eclipse.jdt.core.JavaCodeFormatter -config "c:\path\to\org.eclipse.jdt.core.prefs" "C:\path\to\your\src"
[WARNUNG] Dies scheint in Eclipse 2018 nicht mehr zu funktionieren. Verwenden Sie Eclipse Oxygen.
quelle
Jalopy kann von Interesse sein. Es wird an Ant angeschlossen und ist somit unabhängig von Ihrer IDE.
Astyle kann auch nützlich sein. Es ist Open Source (wie Jalopy), aber in C ++ geschrieben. Es ist auf die Formatierung von Java / C / C ++ ausgerichtet und kann stapelgesteuert sein (über Shell-Skripte oder ähnliches).
quelle
UPDATE: Nach meinem neuen Verständnis basierend auf einem falschen Fehlerbericht, den ich eingereicht habe: https://bugs.eclipse.org/bugs/show_bug.cgi?id=325289 Die OpenMRSFormatter.xml-Datei muss tatsächlich eine Voreinstellungsdatei und keine XML sein Datei.
Eine solche Datei finden Sie hier: https://bugs.eclipse.org/bugs/attachment.cgi?id=178874
oder konvertieren Sie eine XML-exportierte Formatierungsdatei mit: cat formatter.xml | grep Einstellung | sed 's / @@'> formatter.asprefs
Danke Mischa
Hier ist etwas, das ich mit Eclipse 3.6-Gläsern gemacht habe. Es ist nur Java, Befehlszeile und sollte plattformübergreifend kompatibel sein:
http://www.sendspace.com/file/nm4ptt
Es gibt ein Shell-Skript, das eine gebündelte OpenMRSCodeFormatter.xml-Datei verwendet. Die Beispielausgabe:
Dies basiert auf dem Beitrag hier: http://www.peterfriese.de/formatting-your-code-using-the-eclipse-code-formatter/
Da ich nicht weiß, wie lange der Link aktiv bleibt, werde ich den Inhalt unten beschreiben.
Dies basiert auf der Eclipse 3.6 Helios-Distribution. Ich habe die für Linux x86 verwendet, aber sie sollte für jede Version funktionieren, da ich keine (meines Wissens) plattformspezifischen JAR-Dateien verwendet habe.
Der Inhalt des Teerarchivs ist:
Relevante Jars im Plugins-Verzeichnis werden direkt aus dem Eclipse 3.6-Plugins-Verzeichnis entnommen.
Der Inhalt von config.ini ist:
format.sh ist:
und OpenMRSFormatter.xml ist hier verfügbar: http://wiki.openmrs.org/download/attachments/3346087/OpenMRSFormatter.xml?version=1&modificationDate=1282168038000
Ich glaube, das sollte ausreichen, um sich zu reproduzieren.
Ein interessantes Projekt, das auf demselben Konzept basiert, finden Sie hier: http://code.google.com/p/maven-java-formatter-plugin/
Danke Mischa
quelle
Versuchen Sie "Jacobe Code Beautifier":
http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html
Die persönliche Ausgabe ist kostenlos.
quelle
Ich habe Dr. Java zum Codieren verwendet und mit einem schnellen Strg + A + Tab formatiert es alles gut mit Syntaxhervorhebung. Ich habe es auf einem Mac und Windows verwendet, weiß nicht, ob sie Linux unterstützen. Und es ist Open Source, eigenständig und kostenlos.
quelle
Ich habe auch viel den in JRefactory ( http://jrefactory.sourceforge.net/ ) eingebetteten PrettyPrinter verwendet . Ich habe es über das Plugin für JEdit entdeckt. Ich schätzte es, weil es die bessere Javadoc-Berichterstattung hatte, die ich je gesehen habe.
Leider scheint es tot zu sein (keine Entwicklung seit 2004) und unterstützt Java5 nicht.
Übrigens bestätige ich, dass Triemax eine kommerzielle Suite ist, die auf totem Open-Source-Jalopy basiert.
quelle
In unserem Java-Formatierer finden Sie ein Tool, das alle Dialekte von Java behandelt, einschließlich Version 7.
quelle
Jalopy verarbeitet keine Anweisungen wie Listenmaterial <MyClass> ... und Flusenkommentare, die mit @ beginnen
Ich konnte das Formatieren erzwingen, indem ich alle <MyClass> in LTLTLTMyClassGTGTGT und dann @ in // @ // @ // @ änderte (ich wiederhole nur LT, GT oder // @, um sicherzustellen, dass dies nicht der Fall ist existiert bereits. Dann konnte ich Jalopy, und natürlich muss ich alles wieder auf das zurücksetzen, was es war.
Außerdem müssen Sie vor dem Ändern des <oder> sicherstellen, dass Sie keine Vergleiche wie <= oder> = usw. ändern.
Sie können dies also als die Lösung für arme Männer bezeichnen, da sie viele manuelle Schritte umfasst. Wenn ich öfter Jalopy machen würde, würde ich wahrscheinlich ein Skript mit sed schreiben, das diese Änderungen automatisch für mich vornimmt.
quelle