Découvrez detekt , un outil d'analyse de code statique pour le langage de programmation Kotlin . Visitez le site Web du projet pour consulter les guides d'installation, les descriptions des règles, les options de configuration et bien plus encore.
Analyse des odeurs de code pour vos projets Kotlin.
Ensembles de règles hautement configurables.
Générez des références pour supprimer les problèmes existants pour les projets existants tout en vous assurant qu'aucun nouveau problème n'est introduit.
Supprimez les problèmes dans les fichiers sources à l'aide des annotations @Suppress
.
Prise en charge de différents formats de rapports : HTML, Markdown, SARIF, XML (Checkstyle) et rapports personnalisés.
Étendez la détection avec des ensembles de règles et des rapports personnalisés.
Rapports de complexité basés sur les lignes de code, la complexité cyclomatique et le nombre d'odeurs de code.
Intégration de première partie avec Gradle avec notre plugin Gradle.
Une communauté de plugins tiers qui ajoute plus de règles et de fonctionnalités à détecter.
Journal des modifications et guides de migration
Options CLI disponibles
Ensemble de règles et descriptions des règles
Écrire des règles personnalisées et étendre la détection
Suppression des problèmes dans le code
Suppression des problèmes via le fichier de base
Configuration de la détection
Exemples d'intégrations Gradle :
multi-projet (Kotlin DSL)
projet unique (Groovy DSL)
projet unique (plugin Maven non officiel)
curl -sSLO https://github.com/detekt/detekt/releases/download/v[version]/detekt-cli-[version]-all.jar java -jar detekt-cli-[version]-all.jar --help
Vous pouvez trouver d'autres façons d'installer Detekt ici
plugins { id("io.gitlab.arturbosch.detekt") version "[version]"} dépôts { mavenCentral() } détecter { buildUponDefaultConfig = true // préconfigurer defaultsallRules = false // activer toutes les règles disponibles (même instables).config.setFrom("$projectDir/config/detekt.yml") // pointe vers votre configuration personnalisée définissant les règles à exécuter, écrasant la ligne de base du comportement par défaut = file("$projectDir/config/baseline.xml") // un moyen de supprimer les problèmes avant d'introduire detekt} tâches.withType().configureEach { rapports { html.required.set(true) // observez les résultats dans votre navigateur avec des extraits de structure et de codexml.required.set(true) // format de type checkstyle principalement pour les intégrations comme Jenkinssarif.required.set(true) // format SARIF standardisé ( https://sarifweb.azurewebsites.net/) pour prendre en charge les intégrations avec GitHub Code Scanningmd.required.set(true) // format Markdown simple} }// Groovy DSLtasks.withType(Detekt).configureEach { jvmTarget = "1.8"} tâches.withType (DetektCreateBaselineTask).configureEach { jvmTarget = "1.8"}// ou// Kotlin DSLtasks.withType ().configureEach { jvmTarget = "1.8"} tâches.withType ().configureEach { jvmTarget = "1.8"}
Voir maven central pour les versions et sonatype pour les instantanés.
Si vous souhaitez utiliser une version SNAPSHOT, vous pouvez trouver plus d'informations sur cette page de documentation.
Gradle 6.8.3+ est la configuration minimale requise. Cependant, les versions recommandées ainsi que les versions recommandées des autres outils sont :
Version détectée | Graduation | Kotlin | AGP | Niveau cible Java | Version maximale du JDK |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
La liste des versions recommandées pour la version détectée précédente est répertoriée ici.
detekt lui-même fournit un wrapper sur ktlint comme ensemble de règles formatting
qui peut être facilement ajouté à la configuration Gradle :
dépendances { detektPlugins("io.gitlab.artturbosch.detekt:detekt-formatting:[version]") }
De même, il existe des ensembles de règles supplémentaires disponibles pour la détection à partir de la détection :
dépendances { detektPlugins("io.gitlab.artturbosch.detekt:detekt-rules-libraries:[version]") detektPlugins("io.gitlab.artturbosch.detekt:detekt-rules-ruleauthors:[version]") }
Pour plus d’informations, visitez le marché Detekt.
De même, des extensions personnalisées peuvent être ajoutées à Detekt.
Voir CONTRIBUER
Merci à toutes les personnes qui ont contribué à detekt !
Comme mentionné dans...
Vers Detekt 2.0, et au-delà !
droidcon London 2021 - Detekt - État de l'Union
KotlinConf 2018 - Safe(r) Kotlin Code - Outils d'analyse statique pour Kotlin par Marvin Ramin
droidcon NYC 2018 - Analyse de code statique pour Kotlin
Kotlin sur les outils de qualité du code - par @vanniktech Slides Présentation
Intégration detekt dans le Workflow
Vérifier la qualité du code Kotlin
Outils d'analyse statique Kotlin
Le sentez-vous encore ? : Une étude comparative entre le langage Java et Kotlin par Flauzino et al.
Prévenir les anti-modèles logiciels avec Detekt
Intégrations :
Intégration IntelliJ
Intégration SonarQube
Intégration TCA (Tencent CodeAnalysis)
Codacy
Plugin Gradle qui configure Error Prone, Checkstyle, PMD, CPD, Lint, Detekt & Ktlint
Violations Lib est une bibliothèque Java pour analyser les fichiers de rapports comme l'analyse de code statique.
spoutnik est un outil gratuit pour la révision de code statique et prend en charge la détection
Plugin Detekt Maven qui enveloppe la CLI Detekt
Plugin Detekt Bazel qui enveloppe la CLI Detekt
Plugin Gradle qui facilite la vérification des relations publiques sur GitHub et le commentaire automatique des violations
Facteur de code
Action GitHub : tout détecter
Action GitHub : détection de configuration
Des règles personnalisées et des rapports de tiers peuvent être trouvés sur notre marché Detekt .
JetBrains - Création d'IntelliJ + Kotlin
PMD & Checkstyle & ktlint - Idées de valeurs de seuil et de règles de style