Verificação automática de checkstyle Java com GitHub Actions

Luiz Felipe
Prolog App
Published in
4 min readApr 17, 2021

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.

Sem contar que a ideia de um cachorro que faz reviews é muito boa. 😂

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:

nikitasavinov/checkstyle-action
dbelyaev/action-checkstyle

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:

Luna Reviewer

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.

--

--

Luiz Felipe
Prolog App

Cofundador e CTO na prologapp.com. Trabalhando para construir a melhor solução de gestão de pneus da América Latina.