91 votes

Formateur / embellisseur de code Java autonome / jolie imprimante?

Je suis intéressé à en apprendre sur les choix disponibles de haute qualité, stand-alone du code source des formateurs pour Java.

Le formateur doit être autonome, c'est, il doit prendre en charge un mode"batch" qui est découplée de tout environnement de développement particulier. Idéalement, elle devrait être indépendante de tout système d'exploitation particulier . Donc, intégré dans le module de formatage pour l'IDE du jour est de peu d'intérêt ici (à moins que l'IDE prend en charge le mode batch formateur invocation, peut-être à partir de la ligne de commande). Un formateur écrit en closed-source C/C++ qui ne fonctionne que sous Windows n'est pas l'idéal, mais c'est quelque peu intéressante.

Pour être clair, un "formateur" (ou "formatage automatique de la requête") n'est pas le même comme un "vérificateur de style." Un formateur accepte le code source en entrée, applique des règles de style, et produit de style de code source qui est sémantiquement équivalent à l'original du code source. Syntaxique modifications sont limitées à des choses comme la modification de la disposition du code, comme dans l'évolution des espaces, ou l'organisation d' import des déclarations. Très peu, le cas échéant, d'autres refactoring est effectuée. Un correcteur de style s'applique également des règles de style, mais il a simplement des rapports de violations des règles sans produire de code source modifié en sortie. Ainsi, l'image ressemble à ceci:

Formateur (produit modifié le code source qui est conforme aux règles de style)

Lire Le Code Source → Appliquer Des Règles De Style → Écrire De Style De Code Source

Vérificateur de Style (ne produit pas de code source modifié)

Lire Le Code Source → Appliquer Des Règles De Style → Écrire Une Violation Des Règles

De Plus Amples Précisions

Des Solutions doivent être hautement configurable. Je veux être en mesure de préciser mon propre style, pas il suffit de sélectionner à partir d'une liste prédéfinie.

Aussi, je suis pas à la recherche d'un usage général imprimeur écrit en Java qui peut pretty-print beaucoup de choses. Je veux le style de code Java.

Je suis également pas nécessairement intéressés par une grand-unifiée formateur pour de nombreuses langues. Je suppose que cela pourrait être sympa pour une solution de support pour les langages autres que Java, mais ce n'est pas une exigence.

En outre, les outils qui font uniquement de la mise en valeur du code sont droit de sortir.

Je suis également pas intéressé par un service web. Je veux un outil que je peux l'exécuter localement.

Enfin, les solutions ne doivent pas être limités à l'open source, le domaine public, sharewares, logiciel gratuit, commerciale, ou quoi que ce soit d'autre. Toutes les formes de licences sont acceptables.

25voto

Jon Points 23749

JIndent (Commercial) est-ce que vous voulez:

http://www.jindent.com/

J'ai aussi utilisé Bagnole dans le passé pour ce faire, il est open source:

http://jalopy.sourceforge.net/

EDIT: je remarque que la Bagnole est assez vieux et il n'a pas l'air d'être mises à jour récentes. Je ne suis pas tout à fait sûr de savoir comment il va travailler avec Java 5/6. Vous voudrez peut-être regarder à Jacobé à 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 Roedy Vert du site:

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

14voto

notnoop Points 30218

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

7voto

Brian Agnew Points 143181

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

Astyle peut aussi être utile. C'est open source (comme Jalopy) mais écrit en C ++. Il est orienté vers le formatage Java / C / C ++ et peut être piloté par lots (via des scripts shell ou similaires)

4voto

Mise à JOUR: Par ma nouvelle compréhension sur la base d'un incorrect rapport de bug, j'ai déposé: https://bugs.eclipse.org/bugs/show_bug.cgi?id=325289 L'OpenMRSFormatter.xml le fichier doit être un fichier de préférences et pas un fichier XML.

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

ou convertir n'importe quel format XML exporté module de formatage de fichier: chat formatter.xml | grep paramètre | sed 's/@@' > formateur.asprefs

Merci Misha


Voici quelque chose que j'ai fait à l'aide d'Eclipse 3.6 pots. Il est de Java-seulement, la ligne de commande, et devrait être multiplate-forme:

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

Il est un script shell qui utilise un groupés OpenMRSCodeFormatter.xml fichier. L'exemple de sortie:

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 poste ici: http://www.peterfriese.de/formatting-your-code-using-the-eclipse-code-formatter/

Comme je ne sais pas combien de temps le lien qui va rester en place, je vais décrire le contenu ci-dessous.

Ceci est basé sur Eclipse 3.6 Helios de la distribution. J'ai utilisé l'un pour Linux x86, mais il devrait fonctionner pour n'importe quelle version, que je n'ai pas utilisé tout (à ma connaissance) de la plate-forme de fichiers JAR.

Le contenu de l'archive tar sont:

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

Pertinentes pots dans le répertoire plugins sont prises directement à partir d'Eclipse 3.6 répertoire des plugins.

Le contenu de config.ini:

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 pense que cela doit être suffisant pour se reproduire.

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

Merci Misha

0voto

Petey B Points 3119

J'avais l'habitude d'utiliser Dr. Java pour coder et avec un onglet rapide Ctrl + A +, il formate le tout bien 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X