Introdução — Danger

Gabriel Prado
Android Dev BR
Published in
3 min readMay 21, 2020

Danger System é uma ferramenta que pode ser utilizada durante o processo de Integração Contínua para automatização de revisão de código. Através dele é possível estabelecer etapas em que o processo de build deverá executar antes de aprovar um Pull Request. Iremos utiliza-lo em conjunto com o Bitrise (ferramenta de Intergração Contínua) para executar as tasks do gradle detektVerification e ktlintVerification que definimos nos outros dois artigos sobre Análise estática.

Integração

Precisamos instalar o Bundler que será responsável por administrar as Gem's dos repositórios em Ruby, pois iremos utilizar o Danger Ruby.

Atualmente, o Danger em Kotlin está em desenvolvimento e não está disponível para integração.

Após a instalação do Bundler, devemos executar o comando bundler init (Terminal) no root do projeto, ele irá gerar o arquivo Gemfile, que será responsável pelas configurações das Gems. Agora devemos adicionar a gem do Danger ao Gemfile:

Iremos executar o comando bundler install e será gerado o arquivo Gemfile.lock com as configurações e repositório utilizados pelo Danger.

Devemos executar o comando bundler exec danger init para criarmos o arquivo Dangerfile que irá conter os plugins que iremos executar durante o Build do Bitrise. Nesta etapa, teremos que criar uma conta no Github e adiciona-la em nosso projeto, para que ela seja utilizada como o Bot que irá enviar comentários no nosso Pull Request. Após criar a conta, será necessário adicionar um token de autenticação na conta do Bot, ele será utilizado pelo Danger para realizar os comentários. Iremos adicionar esse token nas Secret App Env Vars do Bitrise com o nome de GITHUB_API_TOKEN e com a opção Expose for Pull Request ativa. (Ao executar este comando no terminal, o Danger irá dar uma breve explicação sobre como ele irá funcionar e quais são as configurações necessárias).

Agora, devemos adicionar o Step do Danger no Workflow criado no Bitrise e devemos configurar esse Step com o token de acesso que definimos na variável secreta.

Após adicionar o Step do Danger, devemos incluir um Trigger de Pull Request da Source Branch para a Destination Branch.

Teremos que integrar e configurar os plugins que serão executados pelo Danger durante a Build do Bitrise para gerar as mensagens no Pull Request.

Workflow utilizado no Bitrise:

Integração Detekt Danger:

No arquivo Gemfile devemos adicionar a Gem do Detekt:

No arquivo Dangerfile devemos adicionar o plugin do Detekt com as configurações abaixo:

Resultado Danger-Detekt:

Integração Ktlint (Checkstyle) Danger:

No arquivo Gemfile devemos adicionar a Gem do Ktlint (Checkstyle):

No arquivo Dangerfile devemos adicionar o plugin do Ktlint (Checkstyle) com as configurações abaixo:

Resultado Danger-Ktlint (Checkstyle):

(Opcional) Para finalizar, podemos executar novamente o comando bundler install para atualizarmos o Gemfile.lock com as gems dos plugins detekt e checkstyle.

Também é possível utilizar o Danger com outras ferramentas de análise estática como o Jacoco, Android Lint entre outras.

Pull Request de exemplo: https://github.com/sp4wna1/StaticAnalysis/pull/1

Repositório: https://github.com/sp4wna1/StaticAnalysis

Bitrise: https://app.bitrise.io/app/0156ce9156d4f261

--

--