Introdução — Ktlint

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

Kitlint é uma ferramenta de Checkstyle para Kotlin que não necessita de configuração ao ser adicionado no projeto. Seu objetivo é realizar o processo de análise estática de código para identificar possíveis erros de formatação. Para utilizar essa ferramenta, é necessário realizar a integração no projeto através do Gradle ou baixar o JAR executável e utilizar as Tasks geradas para realizar as análises, também é possível customizar suas Tasks para adequar ao projeto e suas particularidades.

Funcionalidades

  1. Sem configurações: não é necessário configurar nada mais alem da task que iremos executar;
  2. Regras padrões: já existem regras criadas pelos próprios desenvolvedores do Ktlint (seguindo o style guide do Kotlin);
  3. Regras experimentais: é possível criar novas regras seguindo o padrão de código Visitor;
  4. Danger integration: através do relatório gerado pelo Ktlint é possível envia-lo para o Danger interpretar e comentar nos Pull Requests.

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 ktlint.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/ktlint/;

Após criar o ktlint.gradle, iremos incluir as dependências em nosso build.gradle (.):

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

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

O resultado será exibido no terminal em que a task for executada, neste exemplo vemos que foram detectados infrações relacionadas a WildcardImports (import java.*), Unnecessary Block ({}) e NewLineAtEndOfFile (Ausência de uma linha em branco no final do código).

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

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

--

--