BLOG
FILTROS
TAGS MAIS USADAS
Formatador Automático para Objective C
-
AUTOR
Felipe Barreto
TAGs desenvolvimento, iphone sdk
4 COMENTÁRIOS-
Tweet
Uma das coisas que me incomodam na hora de programar pra iPhone é que o XCode não possui um mecanismo para formatar automaticamente o código como há no Eclipse ou no NetBeans. O máximo que a IDE da Apple permite é tabular automaticamente um trecho de código selecionado. Muito fraco.
UPDATE: funcionando agora no Snow Leopard. Verifique a lista de passos da instalação.
Durante a pesquisa, foi difícil escolher o termo certo para encontrar o que eu queria, pois existem diversas variações: code beautifier, formatter, code styler, entre outras.
Finalmente, encontrei o tal do Uncrustify que é um programa de terminal para UNIX - logo, para MAC - e que permite configurar uma série de parâmetros de formatação e aplicar sobre um arquivo de código de diversas linguagens baseadas em C - inclusive Objective C.
"Estou no caminho certo", pensei eu. "Agora só falta aprender a instalar, configurar e fazer o XCode usar o programinha". Depois de penar um pouco, cheguei ao artigo que me colocou na direção que eu esperava. Nem tudo o que foi dito nele funcionou 100% ou está completo, mas foi de grande ajuda para conseguir alcançar o que vou apresentar abaixo.
Baixando e instalando o Uncrustify
- Faça o download do uncrustify e extraia em qualquer lugar;
- Abra o arquivo uncrustify.xcodeproj no XCode e dê um Build (Command-B);
Update: Para o Snow Leopard, o build acima não funcionou. Ao invés dele, use o Terminal, na pasta do uncrustify:
$> ./configure
$> makeVolte à pasta onde extraiu o Uncrustify e procure o executável no caminho build/ppc. Update: no Snow Lepard, o executável estará na pasta src.
Agora, como meu conhecimento de UNIX é meio tosco, não garanto que o passo seguinte seja o mais correto, mas funcionou. :D
- Copie o executável para a pasta /usr/bin (pode ser necessário se autenticar como admin).
Pronto! O Uncrustify está disponível para ser usado por qualquer usuário da máquina.
Criando o arquivo de configuração
Na pasta do Uncrustify, você vai encontrar o arquivo etc/defaults.cfg que possui praticamente todos os parâmetros disponíveis acompanhado de comentários bem explicativos. Mas eles são muitos e configurá-los um por um sem ver o efeito que causam sobre o código é impensável para alguém preguiçoso como eu.
Felizmente, alguém teve a bondade de criar um configurador para diversas ferramentas como o Uncrustify, inclusive o próprio: UniversalIndentGUI.
Esta ferramenta, apesar de ter a interface um pouco tosca e com usabilidade mediana, facilita muito o trabalho, pois permite editar os parâmetros e ver imediatamente o resultado sobre um trecho de código que você pode fornecer e manipular durante a fase de configuração.
Não vou me aprofundar sobre os detalhes desta fase, mas se você não estiver interessado em passar por ela, compartilho aqui o arquivo - ainda em desenvolvimento - com o padrão de código da Mobits.
Usando o arquivo acima, ou gerando o seu próprio, recomendo salvá-lo em /etc/uncrustify/qualquer_coisa.cfg para que esteja disponível para todos os usuários.
Colocando no XCode
Embora o XCode não possua diversas ferramentas comuns em outras IDEs, ele tem um mecanismo simples para adicionar funcionalidades sem muito esforço: os User Scripts.

- Abra a tela de edição dos User Scripts e adicione um Shell Script com nome tipo "Auto Format";
- Sugiro definir um atalho de teclado, como command-shift-A;
- Copie o código abaixo para o seu script (renomeie o arquivo de configuração se necessário):
#!/bin/sh
echo -n "%%%{PBXSelection}%%%"
uncrustify -q -l OC -c /etc/uncrustify/mobits-uncrustify.cfg
echo -n "%%%{PBXSelection}%%%"
- Configure os parâmetros de entrada e saída
- Input: Entire Document
- Directory: Selection
- Output: Replace Document Contents
- Errors: Display in Alert
Pronto. Agora basta executar o script sobre o código que estiver aberto no momento e apreciar sua beleza. :D
Até a próxima.
4 COMENTÁRIOs
-
Luís 22/12/2009, 01:25
Baixei e tentei rodar.. mas deu 3373 erros :S
Snow Leopard 10.6
-
Felipe Barreto 22/12/2009, 10:39
Pois é, Luís. Também tive este problema recentemente e pelo mesmo motivo: snow leopard.
O uncrustify não está dando build no snow leopard e impediu que eu conseguisse usá-lo no script de formatação... infelizmente, nos resta esperar que a galera do uncrustify dê um jeito.
Abraço
-
Felipe Barreto 22/12/2009, 10:55
Coloquei um ticket sobre o problema acima no site do projeto. Vamos ver se rola alguma novidade.
Para acompanhar o ticket: http://sourceforge.net/tracker/index.php?func=detail&atid=786647&aid=2919323&group_id=153164
-
Luís 23/01/2010, 22:33
Estava programando e sem querer apertei "ESC" e apareceu o esqueminha igual do netbeans (não fiz nada haha)





+55 21 3553-1898