Como reformatar / recuperar todos os arquivos de origem em um determinado diretório?

14

Dado um diretório que contém uma árvore de origem, existe uma maneira simples da linha de comando de substituir cada arquivo de origem pelo seu equivalente lindamente reformatado?

Lembre-se de que geralmente uma árvore de origem de um projeto também contém arquivos que não são de origem e as próprias fontes podem estar em idiomas diferentes.

Estou procurando por uma ferramenta que ofereça suporte ao maior número possível de idiomas, porque um projeto geralmente contém fontes em vários idiomas diferentes. Em particular, eu estaria procurando algo que suporte xml / html, javascript, ruby ​​e java.

fdierre
fonte
1
E a linguagem é ...?
usuário desconhecido
2
Perguntas e respostas similares no stackoverflow: stackoverflow.com/questions/1731357/…
lumbric

Respostas:

7

Você pode usar o vim nos modos ex e command, a partir do terminal.

Para recuar um único arquivo:

vim -c "normal gg=G" -e <file-to-indent> <<'EOF'
:wq
EOF

Para recuar arquivos recursivamente, crie o seguinte script:

indent-with-vim.sh

vim -c "normal gg=G" -e $1 <<'EOF'
:wq
EOF

Agora, digite:

$ chmod u+x indent-with-vim.sh
$ find . | xargs -I {} ./indent-with-vim.sh {}

O Vim fará o possível para reindentar os arquivos. Você pode melhorar alguns tipos de arquivos específicos.

Para XML:

  • Instalar xmllint Adicione ao seu.vimrc

    au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
    

Para melhorar a formatação do PHP:

Faça o download http://www.vim.org/scripts/download_script.php?src_id=15001 (ele fará o download de um arquivo chamado php.vim)

Crie os seguintes diretórios em sua casa:

~/.vim/indent

E copie php.vimpara~/.vim/indent

Se você não estiver satisfeito com o resultado de qualquer tipo de arquivo, poderá procurar alternativas na Web (como htb para HTML, https://github.com/vim-ruby/vim-ruby para obter melhorias no Ruby e assim por diante. )

De qualquer maneira, você usaria ou a técnica .vimrc ou o arquivo de recuo foo.vim para melhorar o recuo.

Além disso, você pode alterar os parâmetros de localização para aplicar apenas a alguns tipos específicos, como:

find . -iname "*.html" -or -iname "*.xml"
taksan
fonte
2

Instale o indentpacote e execute o programa nos arquivos.

psusi
fonte
1
Isso apenas suporta C, não é? indent.isidore-it.eu/beautify.html
Césio
Você acha que Fdierre está procurando por um universal?
usuário desconhecido
1
Sim, eu estava procurando por uma ferramenta o mais 'universal' possível. Eu modifiquei a pergunta para especificar isso.
Fdierre
0

Não é livre, nem linha de comando, provavelmente muito complicado, mas o IntelliJ Idea é um IDE capaz de fazer isso. Eu não testei com java ou ruby, mas funciona muito bem com um projeto django (python + javascript + HTML).

Ele também possui uma ampla variedade de opções para configurar o que reformatar.

Se esse for um problema único, você pode baixar uma avaliação gratuitamente.

Esta é uma captura de tela das opções de formato HTML. Ele foi retirado do PyCharm (a versão limitada do python, sem suporte a ruby ​​ou java aqui) como é o que eu uso, mas o IntelliJ deve ser o mesmo, mas suporta muito mais idiomas.

insira a descrição da imagem aqui

Javier Rivera
fonte
0

Formato Java do Google

Reformata o código-fonte Java para estar em conformidade com o Google Java Style:

https://github.com/google/google-java-format

wget https://github.com/google/google-java-format/releases/download/google-java-format-1.5/google-java-format-1.5-all-deps.jar
java -jar google-java-format-1.5-all-deps.jar /path/to/MyClass.java

Dicas:

  • Para fazer isso em arquivos com várias faixas, use o --replace opção, juntamente comxargs
  • Usar sponge para substituir diretamente o arquivo de entrada
  • Há um plug-in Eclipse e IntelliJ para executar a mesma reformatação
Sridhar Sarnobat
fonte