Introdução — Detekt

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

Detekt é uma ferramenta de análise estática de código para a linguagem de programação Kotlin. Seu objetivo é auxiliar os desenvolvedores a aprimorar a qualidade de código gerado, possuí funcionalidades que irão analisar o código e gerar relatórios alertando sobre possíveis vulnerabilidades e imperfeições. Para utilizar essa ferramenta, é necessário realizar a integração no projeto através do Gradle e utilizar as Tasks geradas para realizar as análises, também é possível customizar suas Tasks para adequar ao seu projeto e suas particularidades.

Funcionalidades

  1. Code Smell: são características de código que indicam a violação de um princípio fundamental de Design e que podem ter impacto na qualidade do código, possivelmente aumentando o risco de ocorrência de bugs e falhas futuras na aplicação.
    Exemplos: Códigos duplicados, Mutação de variáveis, Classes e métodos gigantes, etc;
  2. Complexity Report: relatório gerado a partir da análise realizada pela ferramenta, indicando quantidade de Code Smells, Linhas de códigos, Comentários, etc;
  3. Highly configurable: através do XML de configuração, é possível determinar quais regras serão utilizadas pela ferramenta e quais deverão ser aplicadas. É possível desativar e adicionar critérios de aceite para cada regra;
  4. Suppress findings: possibilidade de suprimir erros e avisos através do uso das anotações @Suppress (Kotlin) e @SuppressWarnings (Java);
  5. Thresholds: são valores de aceite para determinadas regras, possibilitando que uma violação exista dentro de uma classe até o valor de Threshold definido;
  6. Baseline: responsável por definir exceções que serão consideradas Whitelist (apenas novos casos serão analisados) e Blacklist (todos os casos serão analisados) para fins de alertar o desenvolvedor sobre os problemas encontrados;
  7. Intelij Plugin: plugin que irá auxiliar o desenvolvedor a não gerar novas infrações de código, indicando alertas para cada violação de regras;
  8. Gradle Tasks: são tarefas customizáveis para alterar o comportamento da ferramenta;
  9. Danger integration: através do relatório gerado pelo Detekt é possível envia-lo para o Danger interpretar e comentar nos Pull Requests, assim recusando ou aprovando a validação automática.

Integração

Iremos criar um package chamado config no root do projeto, que irá conter todas configurações relacionadas a Análise Estática;

Devemos criar o arquivo detekt.gradle que irá conter as configurações da Task que iremos executar para obter o relatório da análise, ele estará localizado no diretório config/detekt/;

Agora, devemos criar o arquivo de configuração no diretório /cofing/detekt/ que irá conter as regras que o Detekt irá adotar para suas análises. No momento, não iremos entrar em detalhes do arquivo de configuração.

Após criar o detekt-config.yml, está na hora de incluir as dependências em nosso build.gradle (root):

Para finalizar, devemos incluir o detekt.gradle em nosso build.gradle (app) através da linha: apply from: “${rootDir}/config/detekt/detekt.gradle” (essa linha será incluída embaixo das linhas com “apply plugin …”). Assim poderemos executar a task detektVerification.

Agora podemos conferir o resultado da task (executando ./gradlew detektVerification) através do exemplo:

O resultado será exibido no terminal em que a task foi executada, neste exemplo vemos que foram detectados infrações relacionadas a EmpyBlocks (Blocos vazios de código), MatchingDeclarationName (Classe com nome diferente do Arquivo) e NewLineAtEndOfFile (Ausência de uma linha em branco no final do código).

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