Introdução — Danger

Gabriel Prado
May 21 · 3 min read
Image for post
Image for post

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:

Image for post
Image for post

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:

Image for post
Image for post

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

Android Dev BR

Artigos em português sobre Android, curados pela comunidade…

Thanks to Rafa Araujo

Gabriel Prado

Written by

Desenvolvedor Android Senior no Mercado Bitcoin— https://github.com/sp4wna1/

Android Dev BR

Artigos em português sobre Android, curados pela comunidade Android Dev BR. Junte-se a nós: https://androiddevbr.org/.

Gabriel Prado

Written by

Desenvolvedor Android Senior no Mercado Bitcoin— https://github.com/sp4wna1/

Android Dev BR

Artigos em português sobre Android, curados pela comunidade Android Dev BR. Junte-se a nós: https://androiddevbr.org/.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store