Analyseur statique Detekt pour Kotlin

Il est temps d'aimer les analyseurs statiques! Rencontrez Detekt à Kotlin


Si vous savez déjà ce qui sera discuté et que vous souhaitez uniquement mettre en œuvre le projet, passez immédiatement au point d'installation.

Qu'est-ce que c'est?


image

Analyse logicielle effectuée (par opposition à l'analyse dynamique) sans exécution réelle des programmes à l'étude. Wikipédia

Et selon vos propres mots, c'est un outil pratique qui vous aide à respecter les règles d'un bon code. Permet une personnalisation très flexible des filtres par la définition d'un mauvais code. Qui à chaque lancement générera un certain rapport, y compris des statistiques sur les conflits détectés, des informations à leur sujet, ce qui permet de déterminer où le conflit s'est produit et son type.

Les analyseurs statiques facilitent le travail du réviseur et font généralement gagner du temps à l'équipe de développement.

Supposons que nous ayons un bon PR, cependant, l'auteur a donné des noms trop longs pour les variables, a écrit du code qui peut être facilement simplifié ou violer l'une des nombreuses règles définies dans le fichier de configuration Detekt, les règles ne sont pas compliquées, mais la révision du code ne passera pas un tel PR.
L'auteur devra à nouveau basculer entre les projets, ainsi que les relecteurs, je suis sûr que la relecture répétée apportera peu de plaisir.
Automatisez si c'est rapide et pas cher. (C) Bon sens

Que sont les analyseurs statiques?


Pour java:


Pour Kotlin:


Je réponds à la question qui se pose dans votre tête, Spot-bugs sur Kotlin ne fonctionne pas.

Introduire Detekt dans le projet


Detect peut être installé de plusieurs manières:

  1. Plugin pour AndroidStudio
  2. Gradle

Je pense que la configuration via Gradle est plus flexible et j'en parle.

Sur le site officiel, il existe plusieurs façons d'installer Detekt dans le projet, selon la version de Gradle, qu'il s'agisse d'un projet Android. Mais, dans mon expérience de la mise en œuvre d'un projet Android, certaines instructions ne fonctionnent pas . Pour le moment, le projet est très proche de la version 1.0. La dernière version au moment de la rédaction est la version 1.0.0-RC14

Alors.

Nous allons sur le site officiel de Gradle et voyons les instructions d'installation.

buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0-RC14" } } 

C'est cette décision que je vous conseille d'adhérer au projet Android.

Vous avez probablement remarqué que j'ai supprimé la ligne de plugin apply: car je vous conseille de séparer Detekt dans un fichier séparé et d'appliquer déjà la demande.

Étape 1:


Copiez donc ce code dans le niveau d'application build.gradle.

Là, dans le bloc allprojects, nous devons écrire une ligne pour appliquer notre fichier contenant les paramètres detekt.

 allprojects { apply from: "$rootDir/detekt.gradle" repositories { maven { url "https://plugins.gradle.org/m2/" } } } 

Étape 2:


Ensuite, vous devez créer le fichier detekt.gradle

 apply plugin: "io.gitlab.arturbosch.detekt" detekt { toolVersion = "1.0.0-RC14" // Version of the Detekt CLI that will be used. When unspecified the latest detekt version found will be used. Override to stay on the same version. input = files("src/main/java") // The directories where detekt looks for input files. Defaults to `files("src/main/java", "src/main/kotlin")`. parallel = true // Builds the AST in parallel. Rules are always executed in parallel. Can lead to speedups in larger projects. `false` by default. filters = ".*build.*,.*/resources/.*,.*/tmp/.*" // Regular expression of paths that should be excluded separated by `;` or `,`. config = files("$rootDir/detekt-config.yml") // Define the detekt configuration(s) you want to use. Defaults to the default detekt configuration. reports { xml { enabled = true // Enable/Disable XML report (default: true) destination = file("build/reports/detekt.xml") // Path where XML report will be stored (default: `build/reports/detekt/detekt.xml`) } html { enabled = true // Enable/Disable HTML report (default: true) destination = file("build/reports/detekt.html") // Path where HTML report will be stored (default: `build/reports/detekt/detekt.html`) } } } 

Étape 3:


Vous devez maintenant créer le fichier de configuration detekt-config.yml

Il s'agit d'un fichier de configuration standard du site officiel .

Étape 4:


Ouvrez une console et exécutez la commande: gradlew detekt

C’est tout!


Vous avez maintenant des statistiques prêtes pour votre projet. Ils sont affichés dans la console, et vous pouvez également les trouver le long du chemin: {u_project} \ app \ build \ reports \ detekt

En conclusion


Il est très pratique d'utiliser Detekt lors de la construction à Jenkins
Le temps d'exécution de la tâche dans un projet avec plus de 2000 classes est de 4 à 7 secondes *.

Je veux dire que l'utilisation d'un analyseur statique simplifie un peu notre travail. Accélère le processus de développement et fait économiser de l'argent aux entreprises.

Références:

Detekt github
Configurer detekt
default-detekt-config.yml

Source: https://habr.com/ru/post/fr442500/


All Articles