Frage Stand-alone-Java-Code-Formatierer / Verschönerer / hübscher Drucker? [geschlossen]


Ich bin daran interessiert, über die verfügbaren Möglichkeiten zu erfahren hochwertige, eigenständige Quellcode-Formatierer für Java.

Der Formatierer muss eigenständig sein, dh er muss a unterstützen "Batch" -Modus das ist entkoppelt von einer bestimmten Entwicklungsumgebung. Im Idealfall sollte es sein unabhängig von einem bestimmten Betriebssystem auch. Daher ist ein integrierter Formatierer für die IDE du jour von geringem Interesse (es sei denn, diese IDE unterstützt den Formatierungsanruf im Stapelmodus, vielleicht von der Befehlszeile aus). Ein Formatierer, der in Closed-Source-C / C ++ geschrieben wurde und nur auf Windows läuft, ist nicht ideal, aber etwas interessant.

Um es klar zu sagen, ein "Formatierer" (oder "Verschönerer") ist nicht dasselbe wie ein "Stil-Prüfer". Ein Formatierer akzeptiert Quellcode als Eingabe, wendet Formatierungsregeln an und erzeugt formatierten Quellcode, der semantisch dem ursprünglichen Quellcode entspricht. Syntaktische Änderungen sind auf Dinge wie das Ändern des Code-Layouts wie das Ändern von Leerzeichen oder das Organisieren beschränkt import Aussagen. Sehr wenig, wenn überhaupt, wird ein anderes Refactoring durchgeführt. Ein Style-Checker wendet auch Styling-Regeln an, aber es ist einfach Berichte Regelverletzungen ohne modifizierten Quellcode zu produzieren als Ausgabe. Also sieht das Bild so aus:

Formatierer (erzeugt modifizierten Quellcode, der den Gestaltungsregeln entspricht)

Quellcode lesen → Styling-Regeln anwenden → Stilisierten Quellcode schreiben

Style Checker (erzeugt keinen modifizierten Quellcode)

Quellcode lesen → Styling-Regeln anwenden → Regelverletzungen schreiben

Weitere Erläuterungen

Lösungen müssen in hohem Maße konfigurierbar sein. Ich möchte in der Lage sein, meinen eigenen Stil festzulegen, nicht einfach aus einer Voreinstellungsliste auszuwählen.

Außerdem bin ich nicht auf der Suche nach einem Allzweck-Pretty-Drucker, geschrieben in Java das kann viele Dinge hübsch bedrucken. Ich möchte Java-Code stylen.

ich bin auch nicht Notwendig interessiert an einem großformatiger Formatierer für viele Sprachen. Ich denke, es wäre schön, wenn eine Lösung andere Sprachen als Java unterstützt, aber das ist keine Voraussetzung.

Außerdem, Werkzeuge, die nur Code-Highlighting durchführen sind Recht  aus.

ich bin auch kein Interesse an einem Web-Service. 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.


76
2018-06-15 15:07


Ursprung


Antworten:


JIndent (Commercial) macht, was Sie wollen:

http://www.jjent

Ich habe in der Vergangenheit auch Jalopy benutzt, um das zu tun, es ist Open Source:

http://jalopy.sourceforge.net/

EDIT: Ich werde feststellen, dass Jalopy ziemlich alt ist und es scheint keine aktuellen Updates zu geben. Ich bin nicht ganz sicher, ob es mit Java 5/6 funktioniert. Vielleicht möchten Sie stattdessen Jacobe sehen:

http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html

Es gibt auch eine vollständigere Liste von Formatierern hier auf Roedy Greens Website:

http://mindprod.com/jgloss/beautifier.html


25
2018-06-15 15:11



Sie können Eclipse-Umformatier auch über die Befehlszeile ausführen. Auschecken dieser Blogeintrag


14
2017-07-16 14:36



Kiste könnte von Interesse sein. Es wird in Ant eingefügt und ist somit unabhängig von Ihrer IDE.

Ein Stil 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 Batch-gesteuert werden (über Shell-Skripte oder ähnliches)


6
2018-06-15 15:12



UPDATE: Per meinem neuen Verständnis basierend auf einem falsch Fehlerbericht habe ich eingereicht: https://bugs.eclipse.org/bugs/show_bug.cgi?id=325289 Die OpenMRSFormatter.xml-Datei muss eigentlich eine Einstellungsdatei und keine XML-Datei sein.

Sie finden eine solche Datei hier: https://bugs.eclipse.org/bugs/attachment.cgi?id=178874

oder konvertieren Sie eine XML-exportierte Formatierdatei mit: Katze formatter.xml | Grep Einstellung | sed 's / @@'> formatter.asprefs

Vielen Dank 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:

misha@misha-d630:~/openmrs-code-formatter$ cat ../Test.java
public class Test {



public a() {
System.out.println("! I did not format this right!");
}



}misha@misha-d630:~/openmrs-code-formatter$ ./format.sh ../Test.java
Configuration Name: OpenMRSFormatter.xml
Starting format job ...
Done.
cat ../misha@misha-d630:~/openmrs-code-formatter$ cat ../Test.java
public class Test {

        public a() {
                System.out.println("! I did not format this right!");
        }

}misha@misha-d630:~/openmrs-code-formatter$ 

Dies basiert auf dem Post hier: http://www.peterfriese.de/formating-your-code-using-the-eclipse-code-formatter/

Da ich nicht weiß, wie lange die Verbindung bestehen bleibt, werde ich den Inhalt unten beschreiben.

Dies basiert auf Eclipse 3.6 Helios-Verteilung. Ich habe das für Linux x86 verwendet, aber es sollte für jede Version funktionieren, da ich (meines Wissens) keine plattformspezifischen JAR-Dateien verwendet habe.

Der Inhalt des tar-Archivs ist:

misha@misha-d630:~$ tar tvjf openmrs-code-formatter.tar.bz2  | sort 
tar: Record size = 8 blocks
drwxr-xr-x misha/misha       0 2010-09-11 19:32 openmrs-code-formatter/plugins/
drwxr-xr-x misha/misha       0 2010-09-11 19:33 openmrs-code-formatter/configuration/org.eclipse.equinox.simpleconfigurator/
drwxr-xr-x misha/misha       0 2010-09-11 19:38 openmrs-code-formatter/configuration/
-rw-r--r-- misha/misha  101957 2010-09-11 19:03 openmrs-code-formatter/plugins/org.eclipse.equinox.common_3.6.0.v20100503.jar
-rw-r--r-- misha/misha  107210 2010-09-11 19:32 openmrs-code-formatter/plugins/org.eclipse.core.commands_3.6.0.I20100512-1500.jar
-rw-r--r-- misha/misha  111098 2010-09-11 19:06 openmrs-code-formatter/plugins/org.eclipse.equinox.preferences_3.3.0.v20100503.jar
-rw-r--r-- misha/misha 1147220 2010-09-11 18:45 openmrs-code-formatter/plugins/org.eclipse.osgi_3.6.0.v20100517.jar
-rw-r--r-- misha/misha    1812 2010-09-11 19:33 openmrs-code-formatter/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
-rw-r--r-- misha/misha  182596 2010-09-11 19:05 openmrs-code-formatter/plugins/org.eclipse.equinox.registry_3.5.0.v20100503.jar
-rw-r--r-- misha/misha  248071 2010-09-11 19:29 openmrs-code-formatter/plugins/org.eclipse.text_3.5.0.v20100601-1300.jar
-rw-r--r-- misha/misha     265 2010-09-11 19:21 openmrs-code-formatter/configuration/config.ini
-rw-r--r-- misha/misha   28554 2010-09-11 19:34 openmrs-code-formatter/OpenMRSFormatter.xml
-rw-r--r-- misha/misha   39331 2010-09-11 19:17 openmrs-code-formatter/plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar
-rw-r--r-- misha/misha 4504121 2010-09-11 19:27 openmrs-code-formatter/plugins/org.eclipse.jdt.core_3.6.0.v_A58.jar
-rw-r--r-- misha/misha   47023 2010-09-11 18:42 openmrs-code-formatter/plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
-rw-r--r-- misha/misha   52710 2010-09-11 19:29 openmrs-code-formatter/plugins/org.eclipse.core.filesystem_1.3.0.v20100526-0737.jar
-rw-r--r-- misha/misha 6451211 2010-09-11 19:32 openmrs-code-formatter/plugins/com.ibm.icu_4.2.1.v20100412.jar
-rw-r--r-- misha/misha   70928 2010-09-11 19:01 openmrs-code-formatter/plugins/org.eclipse.core.runtime_3.6.0.v20100505.jar
-rw-r--r-- misha/misha  769898 2010-09-11 19:29 openmrs-code-formatter/plugins/org.eclipse.core.resources_3.6.0.v20100526-0737.jar
-rw-r--r-- misha/misha   83817 2010-09-11 19:07 openmrs-code-formatter/plugins/org.eclipse.equinox.app_1.3.0.v20100512.jar
-rw-r--r-- misha/misha   86986 2010-09-11 19:31 openmrs-code-formatter/plugins/org.eclipse.core.expressions_3.4.200.v20100505.jar
-rw-r--r-- misha/misha   90837 2010-09-11 19:05 openmrs-code-formatter/plugins/org.eclipse.core.jobs_3.5.0.v20100515.jar
-rw-r--r-- misha/misha   91928 2010-09-11 19:06 openmrs-code-formatter/plugins/org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar
-rwxr-xr-x misha/misha     111 2010-09-11 19:39 openmrs-code-formatter/format.sh

Relevante Dateien im Plugins-Verzeichnis werden direkt aus dem Eclipse 3.6 Plugins-Verzeichnis übernommen.

Der Inhalt von config.ini ist:

misha@misha-d630:~$ more openmrs-code-formatter/configuration/config.ini 
osgi.bundles=reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503.jar@1\:start
org.eclipse.equinox.simpleconfigurator.configUrl=file\:org.eclipse.equinox.simpleconfigurator/bundles.info
eclipse.application=org.eclipse.jdt.core.JavaCodeFormatter

format.sh ist:

misha@misha-d630:~$ more openmrs-code-formatter/format.sh 
#!/bin/bash
java -jar plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar -config OpenMRSFormatter.xml $*

und OpenMRSFormatter.xml ist hier verfügbar: http://wiki.openmrs.org/download/attachments/3346087/OpenMRSFormatter.xml?version=1&modificationDate=1282168038000

Ich denke, das sollte ausreichen, um zu reproduzieren.

Ein interessantes Projekt basierend auf dem gleichen Konzept finden Sie hier: http://code.google.com/p/maven-java-formatter-plugin/

Vielen Dank Mischa


4
2017-09-12 18:20



Versuchen Sie "Jacobe Code Beautifier":

http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html

Die persönliche Ausgabe ist kostenlos.


1
2017-08-06 21:43



Vorher habe ich benutzt Dr. Java Um es zu kodieren und mit einer schnellen Strg + A + Registerkarte formatiert es alles schön mit Syntaxhervorhebung. Ich habe es auf einem Mac und Windows verwendet, weiß nicht, ob sie Linux unterstützen. Und es ist Open Source, Stand-alone und kostenlos.


1
2018-06-15 15:15



Ich habe auch viel PrettyPrinter in JRefactory (http://jrefactory.sourceforge.net/). Ich habe es durch sein Plugin für JEdit entdeckt. Ich schätze es, weil es die bessere Javadoc-Berichterstattung hatte, die ich je gesehen habe.

Leider scheint es tot zu sein (keine Evolution seit 2004) und tatsächlich unterstützt es Java5 nicht.

Übrigens bestätige ich, dass es sich bei Triemax um eine kommerzielle Suite auf der Basis von Open-Source-Jalopy handelt.


0
2018-06-15 20:01



Siehe unsere Java Formatierer für ein Tool, das alle Dialekte von Java einschließlich Version 7 behandelt.


0
2018-05-05 17:01



Jalopy verarbeitet keine Statements wie List stuff <MyClass> ... und Lint Kommentare beginnend mit @

Ich konnte es zwingen zu formatieren, indem ich alle <MyClass> in LTLTLTMyClassGTGTGT und dann @ in // @ // @ // @ ändere (ich wiederhole einfach LT, GT oder // @, um sicherzugehen, dass sie das nicht tun) existierte bereits, dann konnte ich Jalopy, und offensichtlich musste ich alles wieder ersetzen, was es war.

Bevor Sie <oder> ändern, müssen Sie sicherstellen, dass Sie keine Vergleiche wie <= oder> = usw. ändern.

Man könnte dies also die Lösung des armen Mannes nennen, weil es viele manuelle Schritte beinhaltet. Wenn ich Jalopy öfter machen würde, würde ich wahrscheinlich ein Skript mit sed schreiben, das diese Änderungen automatisch für mich machen würde.


0
2017-10-23 15:34