Analizador est谩tico Detekt para Kotlin

隆Es hora de amar los analizadores est谩ticos! Conoce a Detekt en Kotlin


Si ya sabe lo que se discutir谩 y solo est谩 interesado en implementar el proyecto, proceda inmediatamente al punto de instalaci贸n.

Que es esto


imagen

An谩lisis de software realizado (en oposici贸n al an谩lisis din谩mico) sin ejecuci贸n real de los programas en estudio. Wikipedia

Y en sus propias palabras, es una herramienta conveniente que lo ayuda a cumplir con las reglas del buen c贸digo. Permitiendo una personalizaci贸n muy flexible de los filtros mediante la definici贸n de c贸digo incorrecto. Que en cada lanzamiento generar谩 un informe determinado, que incluye estad铆sticas sobre conflictos detectados, informaci贸n sobre ellos, lo que permite determinar d贸nde ocurri贸 el conflicto y su tipo.

Los analizadores est谩ticos facilitan el trabajo del revisor y generalmente ahorran tiempo al equipo de desarrollo.

Supongamos que tenemos un buen PR, sin embargo, el autor dio nombres que son demasiado largos para las variables, escribi贸 un c贸digo que se puede simplificar f谩cilmente o infringi贸 una de las muchas reglas establecidas en el archivo de configuraci贸n de Detekt, las reglas no son complicadas, pero la revisi贸n de c贸digo no pasar谩 dicho PR.
El autor nuevamente tendr谩 que cambiar entre proyectos, as铆 como los revisores, estoy seguro de que la revisi贸n repetida traer谩 poco placer.
Automatice si es r谩pido y no es costoso. (C) sentido com煤n

驴Qu茅 son los analizadores est谩ticos?


Para java:


Para Kotlin:


Respondo la pregunta que surgi贸 en tu cabeza, Spot-bugs en Kotlin no funciona.

Introduciendo Detekt en el proyecto


Detect se puede instalar de varias maneras:

  1. Plugin para AndroidStudio
  2. Gradle

Creo que la configuraci贸n a trav茅s de Gradle es m谩s flexible y estoy hablando de eso.

En el sitio web oficial hay varias formas de instalar Detekt en el proyecto, dependiendo de la versi贸n de Gradle, ya sea un proyecto de Android. Pero, en mi experiencia de implementar un proyecto de Android, algunas instrucciones no funcionan . Por el momento, el proyecto est谩 muy cerca de la versi贸n 1.0. La 煤ltima versi贸n en el momento de escribir este art铆culo es la versi贸n candidata 1.0.0-RC14

Entonces

Vamos al sitio web oficial de Gradle y vemos las instrucciones de instalaci贸n.

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

Es esta decisi贸n la que aconsejo seguir para el proyecto de Android.

Probablemente haya notado que elimin茅 la l铆nea de complemento apply: ya que le aconsejo que separe Detekt en un archivo separado y que aplique ya en 茅l.

Etapa 1:


Entonces, copie este c贸digo al nivel de aplicaci贸n build.gradle.

All铆, en el bloque de todos los proyectos, deber铆amos escribir una l铆nea para aplicar nuestro archivo que contiene la configuraci贸n de detekt.

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

Etapa 2:


Entonces necesita crear el archivo 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`) } } } 

Etapa 3:


Ahora necesita crear el archivo de configuraci贸n detekt-config.yml

Este es un archivo de configuraci贸n est谩ndar del sitio oficial .

Etapa 4:


Abra una consola y ejecute el comando: gradlew detekt

Eso es todo!


Ahora tiene estad铆sticas listas para su proyecto. Se muestran en la consola y tambi茅n puede encontrarlos en la ruta: {u_project} \ app \ build \ reports \ detekt

En conclusi贸n


Es muy conveniente usar Detekt al construir en Jenkins
El tiempo de ejecuci贸n de la tarea en un proyecto con m谩s de 2000 clases es de 4-7 segundos *.

Quiero decir que usar un analizador est谩tico simplifica un poco nuestro trabajo. Acelera el proceso de desarrollo y ahorra dinero empresarial.

Referencias

Detekt github
Configurar detekt
default-detekt-config.yml

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


All Articles