web-dev-qa-db-fra.com

Formateur/embellisseur de code Java autonome/jolie imprimante?

Je souhaite en savoir plus sur les choix disponibles de des formateurs de code source de haute qualité et autonomes pour Java.

Le formateur doit être autonome, c'est-à-dire qu'il doit prendre en charge un mode "batch" c'est-à-dire découplé de tout environnement de développement particulier . Idéalement, il devrait être indépendant de tout système d'exploitation particulier aussi. Ainsi, un formateur intégré pour le IDE du jour présente peu d'intérêt ici (sauf si ce IDE prend en charge le traitement par lots formateur invocation, peut-être à partir de la ligne de commande). Un formateur écrit en C/C++ à source fermée qui ne fonctionne que sur, disons, Windows n’est pas idéal, mais plutôt intéressant.

Pour être clair, un "formateur" (ou "beautifier") n'est pas la même chose qu'un "vérificateur de style". Un formateur accepte le code source en tant qu'entrée, applique les règles de style et produit un code source stylé équivalent au code source original. Les modifications syntaxiques sont limitées à des éléments tels que la modification de la disposition du code, comme lors de la modification d'espaces, ou l'organisation des instructions import. Très peu, le cas échéant, d’autres refactorisations sont effectuées. Un vérificateur de style applique également des règles de style, mais il ne fait que produire rapports violations de règles sans produire de code source modifié}. Donc, l'image ressemble à ceci:

Formateur (produit un code source modifié conforme aux règles de style)

Lire le code source → Appliquer les règles de style → Écrire un code source stylé

Style Checker (ne produit pas de code source modifié)

Lire le code source → Appliquer des règles de style → Écrire des violations de règles

Précisions supplémentaires

Les solutions doivent être hautement configurables. Je veux pouvoir spécifier mon propre style, pas simplement sélectionner dans une liste prédéfinie.

De plus, je ne cherche pas un une jolie imprimante générique écrite en Javaqui puisse joliment imprimer beaucoup de choses. Je souhaite styliser le code Java.

Je suis aussi pas nécessairement intéressé par un formateur unifiépour plusieurs langues. Je suppose qu'il serait peut-être agréable qu'une solution prenne en charge d'autres langues que Java , mais ce n’est pas une obligation.

De plus,les outils qui exécutent uniquement le surlignage de code sont rightout .

Je suis aussi je ne suis pas intéressé par un service Web. Je veux un outil que je peux exécuter localement.

Enfin, les solutions ne doivent pas nécessairement être limitées à des sources ouvertes, au domaine public, aux partagiciels, aux logiciels libres, aux applications commerciales ou à toute autre chose. Toutes les formes de licence sont acceptables .

77
Greg Mattes

JIndent (Commercial) fait ce que vous voulez:

http://www.jindent.com/

J'ai aussi utilisé Jalopy dans le passé pour le faire, c'est open source:

http://jalopy.sourceforge.net/

EDIT: Je noterai que Jalopy est assez vieux et qu’il ne semble pas y avoir de mise à jour récente. Je ne sais pas si cela fonctionnera avec Java 5/6. Vous voudrez peut-être regarder Jacobe à la place:

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

Il y a aussi une liste plus complète des formateurs ici sur le site de Roedy Green:

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

25
Jon

Vous pouvez également exécuter Eclipse Reformatter à partir de la ligne de commande. Découvrez cette entrée de blog

14
notnoop

Jalopy peut être d'intérêt. Il se connecte à Ant et est donc indépendant de votre IDE. 

Astyle peut également être utile. C'est open source (comme Jalopy) mais écrit en C++. Il est conçu pour le formatage Java/C/C++ et peut être piloté par lots (via des scripts Shell ou similaires).

6
Brian Agnew

MISE À JOUR: Selon ma nouvelle compréhension basée sur un rapport de bogue incorrect que j'ai rédigé: https://bugs.Eclipse.org/bugs/show_bug.cgi?id=325289 Le fichier OpenMRSFormatter.xml doit en fait être un fichier de préférences et non un fichier XML.

Vous pouvez trouver un tel fichier ici: https://bugs.Eclipse.org/bugs/attachment.cgi?id=178874

ou convertir tout fichier de formatage XML exporté avec: cat formatter.xml | paramètre grep | sed 's/@@'> formatter.asprefs

Merci Misha


Voici quelque chose que j'ai fabriqué avec les bocaux Eclipse 3.6. Il s’agit uniquement de Java, en ligne de commande et devrait être compatible entre plates-formes:

http://www.sendspace.com/file/nm4ptt

Un script Shell utilise un fichier OpenMRSCodeFormatter.xml intégré. La sortie de l'échantillon:

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$ 

Ceci est basé sur le post ici: http://www.peterfriese.de/formatting-your-code-using-the-Eclipse-code-formatter/

Comme je ne sais pas combien de temps le lien restera actif, je vais décrire le contenu ci-dessous.

Ceci est basé sur la distribution Helios d’Eclipse 3.6. J'ai utilisé celui pour Linux x86, mais cela devrait fonctionner pour toutes les versions, car je n'ai utilisé aucun fichier JAR (à ma connaissance) spécifique à la plate-forme.

Le contenu de l'archive tar est:

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

Les fichiers JAR pertinents du répertoire plugins proviennent directement du répertoire des plugins Eclipse 3.6.

Le contenu de config.ini est:

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 est:

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 $*

et OpenMRSFormatter.xml est disponible ici: http://wiki.openmrs.org/download/attachments/3346087/OpenMRSFormatter.xml?version=1&modificationDate=1282168038000

Je crois que cela devrait être suffisant pour se reproduire.

Un projet intéressant basé sur le même concept se trouve ici: http://code.google.com/p/maven-Java-formatter-plugin/

Merci Misha

4

Essayez "Jacobe Code Beautifier":

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

L'édition personnelle est gratuite.

1
user152102

J'avais l'habitude d'utiliser Dr. Java pour coder et avec un rapide onglet Ctrl + A +, il le formate parfaitement avec la coloration syntaxique. Je l'ai utilisé sur un Mac et Windows, ne sais pas s'ils prennent en charge Linux. Et il est open source, autonome et gratuit.

1
Petey B

Voir notre Java Formatter pour un outil qui gère tous les dialectes de Java, y compris la version 7.

0
Ira Baxter

J'ai aussi beaucoup utilisé le PrettyPrinter intégré à JRefactory ( http://jrefactory.sourceforge.net/ ). Je l'ai découvert grâce à son plugin pour JEdit. Je l’ai apprécié car il offrait la meilleure couverture javadoc que j’ai jamais vue.

Malheureusement, il semble mort (pas d'évolution depuis 2004) et en réalité, il ne supporte pas Java5.

En passant, je confirme que Triemax est une suite commerciale basée sur Jalopy, une source ouverte et morte.

0
Michael Zilbermann

Jalopy ne gère pas les instructions telles que les éléments de liste <MyClass> ... et les commentaires lint commençant par @

J'ai été capable de le forcer à formater en changeant tous les <MyClass> en LTLTLTMyClassGTGTGT puis @ en // @ // @ @ // @ (je répète simplement LT, GT ou // @ Jalopy, et évidemment je dois tout remettre en place.

Aussi, avant de changer le <ou>, vous devez vous assurer que vous ne changerez pas, comme <= ou> = etc.

Vous pourriez donc appeler cela la solution du pauvre homme car elle implique de nombreuses étapes manuelles. Si je devais faire Jalopy plus souvent, j'écrirais probablement un script en utilisant sed qui apporterait ces modifications automatiquement pour moi.

0
cpu