Verificação automática de checkstyle Java com GitHub Actions
Não tem muito tempo o Gustavo Navarro escreveu um artigo aqui no Medium contando como automatizamos através do checkstyle na IDE as verificações do nosso style guide Java:
O artigo é muito interessante e completo, recomendo a leitura.
Porém, desde as automatizações do style guide na IDE nós já estávamos de olho no próximo passo: como automatizar nossos pull requests para que qualquer coisa fora do padrão seja automaticamente reportada?
Isso é importante porque, apesar de ter o checkstyle rodando na sua IDE, ele não te obriga a commitar as coisas no padrão. Ou seja, caso queira ou mesmo por um equívoco, ainda é possível realizar um push com códigos fora do padrão. E isso piora quando um PR é aberto, pois o revisor do PR precisa se preocupar, também, com a conformidade do código com o nosso style guide.
Convenhamos, organização do código é um negócio chato demais para ficar verificando manualmente. Mas, ao mesmo tempo, para quem está muito acostumado com uma estrutura de organização, algo diferente dos conformes costuma distrair e tirar o foco do que de fato deve ser revisado.
É ou não é verdade?
A solução
Nós já estávamos de olho no reviewdog a um tempinho 👀:
O slogan deles é altamente atrativo:
A code review dog who keeps your codebase healthy.
Com o reviewdog é possível realizar comentários diretamente no código de um PR aberto, tendo como base para checagem qualquer ferramenta de lint. Era exatamente o que precisávamos!
E melhor: ele já suporta "out of the box" o Github Actions, que é a ferramenta na qual queríamos criar essa automação.
Com isso definido, resolvemos procurar, primeiro, se existiam actions prontas que resolviam nosso problema (aplicar o checkstyle em um codebase Java utilizando o reviewdog). Encontramos duas:
Optamos por ficar com a dbelyaev/action-checkstyle apenas por uma questão visual: a forma que ela faz os comentários. Veja a diferença:
A segunda imagem foi a action que escolhemos utilizar para a automação.
O restante foi simples. Realizamos a criação da action e tudo funcionou normalmente. Aqui vai um breve tutorial sobre como fazer isso:
1 — No seu repositório, clique na seção "Actions".
2 — Depois, clique em "set up a workflow yourself".
3 — Agora, cole o arquivo de configuração da action do reviewdog. Atenção para a opção destacada "checkstyle_config". Ela contém o path do seu arquivo customizado de checkstyle (o nosso fica dentro da pasta ".idea", que está na raiz do repositório).
A configuração checkstyle_config é opcional. Ela só é útil caso você tenha um checkstyle na sua empresa com as regras do seu style guide definidas.
Se você não fornecer essa opção na criação da action, ela utilizará automaticamente o checkstyle no padrão do google.
Abaixo em texto para você poder copiar:
name: reviewdog
on: [pull_request]
jobs:
checkstyle:
name: runner / checkstyle
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: dbelyaev/action-checkstyle@master
with:
github_token: ${{ secrets.github_token }}
reporter: github-pr-review
checkstyle_config: .idea/checkstyle-prolog.xml
Após isso, basta confirmar a criação e pronto. A partir de agora, todos os seus PRs serão automaticamente revisados pelo reviewdog. 🐶
Internamente, o time resolveu chamar essa action de luna-reviewer. Pois a Luna já é a mascote da equipe:
E aí, o que achou do artigo? Na sua empresa vocês automatizam a verificação de style guide de alguma outra forma?
Conta pra gente nos comentários! Estamos sempre prontos para aprender e trocar uma ideia.