Formatação de código Java Autónoma/bonita / bonita impressora? [fechado]

Estou interessado em aprender sobre as opções disponíveis de formatação de código fonte de alta qualidade e independente para Java.

o formatador deve ser independente, isto é, deve suportar um modo "Lote" que é dissociado de qualquer ambiente específico de desenvolvimento. Idealmente, deve ser independente de qualquer sistema operacional específico também. Assim, um formador embutido para o IDE du jour é de pouco interesse aqui (a menos que esse IDE suporta a invocação de formatação do modo de lote, talvez da linha de comandos). Um formatador escrito em C/C++ de código fechado que só funciona em, digamos, o Windows não é ideal, mas é um pouco interessante.

para ser claro, um "formatador" (ou "beautifier") não é o mesmo que um " checker estilo." um formatador aceita código fonte como entrada, aplica regras de estilo, e produz código fonte estilizado que é semanticamente equivalente ao código fonte original. As modificações sintácticas são limitadas a coisas como modificar a disposição do código como em mudar o espaço em branco, ou organizar as declarações import. Muito pouco, se houver, é realizado outro refactoring. Um verificador de estilo também aplica regras de estilo, mas simplesmente relata violações de regras sem produzir código fonte modificado como resultado. Então a imagem é assim:

formatador (produz código fonte modificado que está em conformidade com as regras de estilo)

Ler O Código-Fonte → Aplicar As Regras De Estilo → Escrever Estilizado Código-Fonte

Verificador de estilo (não produz código-fonte modificado)

Ler Código-Fonte → Aplicar Regras De Estilo → Escrever Violações De Regras

Outros Esclarecimentos

As soluções devem ser altamente configuráveis. Eu quero ser capaz de especificar o meu próprio estilo, não simplesmente selecionar a partir de uma lista predefinida.

além disso, não estou à procura de uma Pretty-printer de propósito geral escrita em Java. isso pode imprimir muitas coisas. I want to style Código Java.

eu também não necessariamente interessado em um formatador grande unificado para muitas línguas. Acho que seria bom para uma solução ter suporte para outras linguagens além de Java, mas isso não é um requisito.

Além Disso, as ferramentas que só executam o realce de código estão à direita fora.

Também não estou interessado num serviço web.Quero uma ferramenta que possa executar. localmente.

finalmente, as soluções não precisam ser restritas a código aberto, Domínio público, shareware, software livre, comercial, ou qualquer outra coisa. Todas as formas de licenciamento são aceitáveis.

Author: Community, 2009-06-15

9 answers

A JIndent (Comercial) faz o que quer:

Http://www.jindent.com/

Eu também usei Jalopy no passado para fazer isso, é código aberto:

Http://jalopy.sourceforge.net/

EDIT: vou notar que o Jalopy é bastante antigo e não parece haver nenhuma actualização recente. Não sei se vai funcionar com o Java 5/6. É melhor veres o Jacobe. em vez disso:

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

Há também uma lista mais completa de formatadores aqui no site de Roedy Green:

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

 25
Author: Jon, 2016-12-17 04:31:19

Você também pode executar o reformatter Eclipse a partir da linha de comando. Confira este item do blog

 14
Author: notnoop, 2009-07-16 14:36:42

Pode ser interessante. Vai ligar-se à formiga e, portanto, é independente da sua IDE.

Astyle também pode ser útil. É de código aberto (como o Jalopy), mas escrito em C++. Ele é voltado para a formatação Java / C / C++ e pode ser movido por lote (através de scripts shell ou similar)

 6
Author: Brian Agnew, 2009-06-15 15:12:13

Actualização: de acordo com o meu novo entendimento baseado num relatório de erroincorrecto que apresentei: https://bugs.eclipse.org/bugs/show_bug.cgi?id=325289 O Padrão Openmrsformat.o ficheiro xml tem de ser um ficheiro de preferências e não um ficheiro XML.

Você pode encontrar esse arquivo aqui: https://bugs.eclipse.org/bugs/attachment.cgi?id=178874

Ou converter qualquer ficheiro de formatação XML exportado com: formatação de gatos.configuração do xml / grep / sed ' s/@' > formatação.asprefs

Obrigado. Misha
Aqui está uma coisa que fiz usando 3.6 frascos do Eclipse. É apenas Java, linha de comandos, e deve ser compatível com plataforma cruzada:

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

Existe um script shell que usa um OpenMRSCodeFormatter empacotado.ficheiro xml. A saída da amostra:

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$ 

Isto é baseado no post aqui: http://www.peterfriese.de/formatting-your-code-using-the-eclipse-code-formatter/

Como não sei quanto tempo o link vai ficar ligado, vou descrever o conteúdo abaixo.

Isto é baseado na distribuição Eclipse 3.6 Helios. Eu usei o Para Linux x86, mas ele deve funcionar para qualquer versão, já que eu não usei nenhum (que eu saiba) arquivos JAR específicos plataforma.

O conteúdo do arquivo tar é:

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

Os frascos relevantes na pasta de plugins são retirado directamente da pasta de plugins Eclipse 3.6.

O conteúdo da configuração.ini são:

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

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

E O OpenMRSFormatter.o xml está disponível aqui: http://wiki.openmrs.org/download/attachments/3346087/OpenMRSFormatter.xml?version=1&modificationDate=1282168038000

Acho que isso deve ser suficiente para se reproduzir. Um projecto interessante baseado no mesmo conceito é encontrado aqui: http://code.google.com/p/maven-java-formatter-plugin/ Obrigado. Misha
 4
Author: Миша Кошелев, 2010-09-15 20:26:03
Tenta "Jacobe Code Beautifier".

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

A edição pessoal é grátis.
 1
Author: user152102, 2009-08-06 21:43:54

Eu costumava usar o Dr. Java para codificar e, com um ctrl+a + tab, Formata-o muito bem com realce de sintaxe. Eu o usei em um Mac e Windows, não sei se eles suportam linux. E é de código aberto, ficar sozinho e livre.

 1
Author: Petey B, 2013-09-18 20:49:06

Também usei muito o PrettyPrinter embutido no JRefactory ( http://jrefactory.sourceforge.net / . descobri - o através do seu 'plugin' para o JEdit. Eu apreciei-o porque tinha a melhor cobertura javadoc que eu já vi.

Infelizmente parece morto (nenhuma evolução desde 2004) e na verdade não suporta Java5.

A propósito, confirmo que o Triemax é uma suite comercial baseada num Calhambeque de código aberto morto.
 0
Author: Michael Zilbermann, 2009-06-15 20:01:28

Veja o nossoformatador Java para uma ferramenta que lida com todos os dialectos de Java, incluindo a versão 7.

 0
Author: Ira Baxter, 2012-05-05 17:01:31

O Jalopy não lida com declarações como List stuff ... e comentários lint começando com @

Consegui forçá-lo a formatar alterando toda a para Ltltltmyclassgtgt e depois @ para //@//@//@ (eu só repito o LT, GT Ou / @ para ter certeza que eles já não existem. Depois fui capaz de empatar, e obviamente tenho de repor tudo de volta ao que era.

Além disso, antes de mudar o tem de se certificar de que não vai mudar compara como = etc.

Então, podes chamar a isto a solução do pobre homem, porque envolve muitos passos manuais. Se eu fosse fazer Jalopy mais frequentemente, eu provavelmente escreveria um script usando sed que faria essas alterações automaticamente para mim.
 0
Author: cpu, 2014-10-23 15:34:37