Detekt pour Kotlin : guide complet avec exemples
1. Qu'est-ce que Detekt et pourquoi l'utiliser ?
Detekt est un puissant outil d'analyse statique de code pour le langage Kotlin, créé par Arturbosch et maintenu par la communauté. Il est conçu pour détecter automatiquement les problèmes potentiels, les "code smells", les violations des conventions de style et les vulnérabilités dans les projets Kotlin. Detekt fonctionne au niveau de l'arbre syntaxique abstrait (AST), ce qui lui permet d'analyser le code plus en profondeur que les simples linters textuels. L'outil s'intègre avec les systèmes de build Gradle, Maven et d'autres outils CI/CD, ce qui le rend indispensable pour maintenir la qualité du code dans le développement en équipe.
Pourquoi utiliser Detekt ? Premièrement, il automatise la vérification du code par rapport aux conventions de codage Kotlin, ce qui est particulièrement important dans les grands projets impliquant plusieurs développeurs. Deuxièmement, Detekt aide à identifier les bugs potentiels à un stade précoce : par exemple, les variables inutilisées, les possibles NullPointerException, les constructions conditionnelles complexes et d'autres problèmes pouvant entraîner des erreurs d'exécution. Troisièmement, l'outil facilite le refactoring : il met en évidence les sections de code à haute complexité cyclomatique, les fonctions longues, les opérateurs elvis redondants et autres motifs qui nuisent à la lisibilité et à la maintenabilité du code.
Detekt propose plus de 150 règles intégrées, réparties en catégories : bugs potentiels (potential bugs), style de code (style), performances (performance), complexité (complexity), exceptions (exceptions) et autres. L'outil est entièrement configurable : vous pouvez activer/désactiver des règles individuelles, modifier leurs seuils, et même écrire vos propres règles en Kotlin. Detekt prend en charge la génération de rapports aux formats HTML, XML, SARIF et texte, ce qui permet de l'intégrer à n'importe quel système d'analyse de code.
2. Installation
Detekt s'installe comme un plugin pour le système de build Gradle (méthode recommandée) ou comme un outil CLI autonome. Voici les commandes précises pour l'installation.
Installation via Gradle (plugin)
Ajoutez dans le fichier build.gradle.kts (ou build.gradle) :
// build.gradle.kts
plugins {
id("io.gitlab.arturbosch.detekt") version "1.23.6" // version actuelle au moment de la rédaction
}
// Configuration Detekt (optionnelle)
detekt {
buildUponDefaultConfig = true // utiliser les règles par défaut + les vôtres
allRules = false // ne pas activer toutes les règles (uniquement les recommandées)
config.setFrom("$projectDir/config/detekt/detekt.yml") // chemin vers la config
baseline = file("$projectDir/config/detekt/baseline.xml") // baseline pour ignorer les erreurs
reports {
html.required.set(true) // générer un rapport HTML
xml.required.set(true) // générer un rapport XML
txt.required.set(true) // générer un rapport texte
}
}
Après avoir ajouté le plugin, exécutez la commande :
./gradlew detekt
Installation via CLI (Homebrew pour macOS/Linux)
brew install detekt
Installation via SDKMAN
sdk install detekt
Installation via JAR (méthode universelle)
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. Démarrage rapide — exemple minimal fonctionnel
Créez un fichier Kotlin simple src/main/kotlin/example.kt :
// example.kt
fun main() {
val x = 1
val y = 2
if (x > 0) {
println("Positif")
} else {
println("Non positif")
}
println("Somme : ${x + y}")
}
Créez un fichier de configuration config/
Aussi dans la bibliothèque
Conteneur d'injection de dépendances pour Go (Golang) : Wire, Dig et Uber FX
R.swift Swift : guide complet avec exemples et tutoriel
Disruptor Java : guide complet avec exemples pratiques
iText 7 pour Java : guide complet avec exemples pratiques
Realm Kotlin pour Kotlin : guide complet avec exemples