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 .
JIndent (Commercial) fait ce que vous voulez:
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:
Vous pouvez également exécuter Eclipse Reformatter à partir de la ligne de commande. Découvrez cette entrée de blog
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
Essayez "Jacobe Code Beautifier":
http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html
L'édition personnelle est gratuite.
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.
Voir notre Java Formatter pour un outil qui gère tous les dialectes de Java, y compris la version 7.
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.
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.