Tutorial Rubocop: Análise de código para programadores Ruby
Problemas para padronização de código Ruby? O Rubocop é uma ferramenta que analisa todo o seu código e lhe mostra aonde está fora do padrão.
Qual é o padrão a ser seguido?
Uma das coisas mais fantásticas da comunidade Ruby é a padronização do código. Existe uma Style Guide que todos os programadores seguem. Quando eu digo todos, você pode achar exagero, mas dentro da comunidade as convenções são levadas a sério.
Há muitos itens definidos nessa Style Guide, como: indentação de código, nomenclatura de classes/métodos/variáveis, definição strings/arrays/hashmaps e muito mais. Você pode consultar mais detalhes na documentação resumida ou na documentação completa.
Posso alterar o padrão?
Alguns projetos (normalmente de grande porte) fazem uma extensão dessa Style Guide e modificam alguns itens de acordo com suas particularidades. Vale ressaltar que os ajustes são pequenos e a essência permanece a mesma. Os mais populares são do Airbnb e Shopify.
Na maioria dos casos eu recomendo seguir o padrão principal. Fazer o próprio padrão é algo para programadores bem experientes e com uma necessidade bem específica.
Uma ferramenta que vai te ajudar
É provável que programadores iniciantes terão dificuldades para se lembrar de todas as regras e por mais cuidadoso que você seja, sempre tem algo passa despercebido.
O Rubocop é uma ferramenta que analisa seu código e verifica se ele está dentro do padrão. Disponível no RubyGems, o Rubocop pode facilmente ser instalado e configurado.
Rubocop: Passo 1 - Instalação
Basta adicionar no seu Gemfile e executar o bundle. Mais detalhes estão na documentação oficial: Instalação Rubocop.
Depois de instalar, você já pode executar o comando rubocop na pasta do seu projeto. Porém vai aparecer muitos erros e inicialmente você se assusta, pois não sabe por onde começar.
Rubocop: Passo 2 - Configuração
Para configurar quais arquivos e quais regras você deseja validar, basta inserir um arquivo .rubocop.yml na pasta raiz do seu projeto. O conteúdo deste arquivo pode ser algo assim:
AllCops:
Exclude:
- config/**/*
- db/migrate/**/*
Rails:
Enabled: true
Basicamente neste arquivo, informei alguns diretórios que desejo remover da verificação e também habilitei algumas verificações específicas para softwares que utilizam o Ruby on Rails.
Se você quer mais detalhes sobre as configurações do Rubocop, clique aqui.
Rubocop: Passo 3 - Organizando os erros
Mesmo adicionando um arquivo de configuração, é difícil visualizar os alertas do Rubocop pelo console. Para esta situação existe o comando rubocop --auto-gen-config que gera um arquivo com todos os erros. O arquivo gerado se chama .rubocop_todo.yml e fica na raiz do projeto.
Se executar agora o comando rubocop, você perceberá que todos os erros sumiram!
Na verdade eles não sumiram, o Rubocop simplesmente ignora todos os erros contidos no arquivo .rubocop_todo.yml
. Desta forma, você pode resolver um item por vez e gradualmente remover os erros do .rubocop_todo.yml
.
Se você quer mais detalhes spbre o Automatically Generated Configuration (auto-gen-config) consulte este link.
Rubocop: Passo 4 - Corrigir automaticamente
Para corrigir os alertas automaticamente, basta executar o comando rubocop -a
. Vale ressaltar que nem todos os erros é possível corrigir automaticamente e neste caso a correção é manual. Na documentação tem um tópico específico para a Auto Correção, recomendo a leitura.
Por fim, estas são as funcionalidades básicas do Rubocop, mas se você quer aprender mais, basta entrar no site oficial.
Dúvidas ou sugestões é só entrar em contato. Abraço.