Detekt para Kotlin: guia completo com exemplos práticos
1. O que é e para que serve
Detekt é uma ferramenta poderosa de análise estática de código para a linguagem Kotlin, criada pela Arturbosch e mantida pela comunidade. Ela foi projetada para detectar automaticamente problemas potenciais, "code smells", violações de convenções de estilo e vulnerabilidades em projetos Kotlin. O Detekt opera no nível da árvore sintática abstrata (AST), permitindo analisar o código de forma mais profunda do que linters textuais simples. A ferramenta se integra com sistemas de build como Gradle, Maven e outras ferramentas CI/CD, tornando-se indispensável para manter a qualidade do código em desenvolvimento em equipe.
Para que serve o Detekt? Primeiro, ele automatiza a verificação do código em relação aos padrões Kotlin Coding Conventions, algo essencial em projetos grandes com vários desenvolvedores. Segundo, o Detekt ajuda a identificar bugs potenciais em estágios iniciais: variáveis não utilizadas, possíveis NullPointerException, construções condicionais complexas e outros problemas que podem causar erros em tempo de execução. Terceiro, a ferramenta incentiva a refatoração: ela destaca trechos de código com alta complexidade ciclomática, funções longas, operadores elvis redundantes e outros padrões que prejudicam a legibilidade e a manutenibilidade do código.
O Detekt oferece mais de 150 regras integradas, organizadas em categorias: bugs potenciais (potential bugs), estilo de código (style), desempenho (performance), complexidade (complexity), exceções (exceptions) e outras. A ferramenta é totalmente configurável: você pode ativar/desativar regras individuais, alterar seus limites e até criar regras personalizadas em Kotlin. O Detekt suporta a geração de relatórios nos formatos HTML, XML, SARIF e texto, permitindo integração com qualquer sistema de análise de código.
2. Instalação
O Detekt é instalado como um plugin para o sistema de build Gradle (método recomendado) ou como uma ferramenta CLI independente. Abaixo estão os comandos exatos para instalação.
Instalação via Gradle (plugin)
Adicione ao arquivo build.gradle.kts (ou build.gradle):
// build.gradle.kts
plugins {
id("io.gitlab.arturbosch.detekt") version "1.23.6" // versão atual no momento da escrita
}
// Configuração do Detekt (opcional)
detekt {
buildUponDefaultConfig = true // usar regras padrão + personalizadas
allRules = false // não ativar todas as regras (apenas as recomendadas)
config.setFrom("$projectDir/config/detekt/detekt.yml") // caminho para o arquivo de configuração
baseline = file("$projectDir/config/detekt/baseline.xml") // baseline para ignorar erros
reports {
html.required.set(true) // gerar relatório HTML
xml.required.set(true) // gerar relatório XML
txt.required.set(true) // gerar relatório de texto
}
}
Após adicionar o plugin, execute o comando:
./gradlew detekt
Instalação via CLI (Homebrew para macOS/Linux)
brew install detekt
Instalação via SDKMAN
sdk install detekt
Instalação via JAR (método universal)
curl -sSLO https://github.com/detekt/detekt/releases/download/v1.23.6/detekt-cli-1.23.6-all.jar
alias detekt='java -jar detekt-cli-1.23.6-all.jar'
3. Início rápido — exemplo mínimo funcional
Crie um arquivo Kotlin simples src/main/kotlin/exemplo.kt:
// exemplo.kt
fun main() {
val x = 1
val y = 2
if (x > 0) {
println("Positivo")
} else {
println("Não positivo")
}
println("Soma: ${x + y}")
}
Crie o arquivo de configuração config/