Conozca detekt , una herramienta de análisis de código estático para el lenguaje de programación Kotlin . Visite el sitio web del proyecto para obtener guías de instalación, descripciones de reglas, opciones de configuración y más.
Análisis de olor de código para sus proyectos Kotlin.
Conjuntos de reglas altamente configurables.
Genere líneas de base para suprimir los problemas existentes para proyectos heredados y, al mismo tiempo, asegurarse de que no se introduzcan nuevos problemas.
Suprima problemas en archivos fuente usando anotaciones @Suppress
.
Soporte para diferentes formatos de informes: HTML, Markdown, SARIF, XML (Checkstyle) e informes personalizados.
Amplíe detekt con conjuntos de reglas e informes personalizados.
Informes de complejidad basados en líneas de código, complejidad ciclomática y número de olores de código.
Integración propia con Gradle con nuestro complemento Gradle.
Una comunidad de complementos de terceros que agrega más reglas y funciones para detectar.
Registro de cambios y guías de migración
Opciones CLI disponibles
Conjunto de reglas y descripciones de reglas
Escribir reglas personalizadas y ampliar detekt
Suprimir problemas en el código
Suprimir problemas mediante un archivo de referencia
Configurando detección
Ejemplos de integraciones de Gradle:
multiproyecto (Kotlin DSL)
proyecto único (Groovy DSL)
proyecto único (complemento no oficial de Maven)
curl -sSLO https://github.com/detekt/detekt/releases/download/v[versión]/detekt-cli-[versión]-all.jar java -jar detekt-cli-[versión]-all.jar --ayuda
Puedes encontrar otras formas de instalar detekt aquí
complementos { id("io.gitlab.arturbosch.detekt") versión "[versión]"} repositorios { expertoCentral() } detectar { buildUponDefaultConfig = true // preconfigura defaultsallRules = false // activa todas las reglas disponibles (incluso las inestables).config.setFrom("$projectDir/config/detekt.yml") // apunta a tu configuración personalizada que define las reglas para ejecutar, sobrescribiendo la línea base de comportamiento predeterminada = file("$projectDir/config/baseline.xml") // una forma de suprimir problemas antes de introducir detekt} tareas.withType().configureEach { informes { html.required.set(true) // observe los resultados en su navegador con estructura y fragmentos de códigoxml.required.set(true) // formato tipo checkstyle principalmente para integraciones como Jenkinssarif.required.set(true) // formato SARIF estandarizado ( https://sarifweb.azurewebsites.net/) para admitir integraciones con GitHub Code Scanningmd.required.set(true) // formato Markdown simple} }// Groovy DSLtasks.withType(Detekt).configureEach { jvmTarget = "1.8"} tareas.withType(DetektCreateBaselineTask).configureEach { jvmTarget = "1.8"}// o// Kotlin DSLtasks.withType ().configureEach { jvmTarget = "1.8"} tareas.withType ().configureEach { jvmTarget = "1.8"}
Consulte maven central para ver lanzamientos y sonatype para instantáneas.
Si desea utilizar una versión SNAPSHOT, puede encontrar más información en esta página de documentación.
Gradle 6.8.3+ es el requisito mínimo. Sin embargo, las versiones recomendadas junto con las versiones recomendadas de otras herramientas son:
Versión detectada | Gradle | Kotlin | AGP | Nivel objetivo de Java | Versión máxima de JDK |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
La lista de versiones recomendadas para la versión anterior de detekt se incluye aquí.
El propio detekt proporciona un contenedor sobre ktlint como conjunto de reglas formatting
que se puede agregar fácilmente a la configuración de Gradle:
dependencias { detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[versión]") }
De manera similar, hay conjuntos de reglas adicionales disponibles para detekt desde detekt:
dependencias { detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[versión]") detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[versión]") }
Para obtener más información, visite Detekt Marketplace.
Asimismo, se pueden agregar extensiones personalizadas a detekt.
Ver CONTRIBUIR
¡Gracias a todas las personas que contribuyeron a detekt!
Como se menciona en...
¡Hasta Detekt 2.0 y más allá!
droidcon Londres 2021 - Detekt - Estado de la Unión
KotlinConf 2018 - Código Kotlin Safe(r) - Herramientas de análisis estático para Kotlin por Marvin Ramin
droidcon NYC 2018 - Análisis de código estático para Kotlin
Kotlin sobre herramientas de calidad de código: por @vanniktech Presentación de diapositivas
Integración de detekt en el flujo de trabajo
Verifique la calidad del código Kotlin
Herramientas de análisis estático de Kotlin
¿Aún lo hueles?: Un estudio comparativo entre Java y el lenguaje Kotlin realizado por Flauzino et al.
Prevención de antipatrones de software con Detekt
Integraciones:
Integración IntelliJ
Integración de SonarQube
Integración de TCA (Tencent CodeAnalysis)
codacia
Complemento de Gradle que configura Error Prone, Checkstyle, PMD, CPD, Lint, Detekt y Ktlint
Violations Lib es una biblioteca Java para analizar archivos de informes como análisis de código estático.
sputnik es una herramienta gratuita para revisión de código estático y brinda soporte para detekt
Complemento Detekt Maven que incluye la CLI de Detekt
Complemento Detekt Bazel que incluye la CLI de Detekt
Complemento de Gradle que ayuda a facilitar la verificación de relaciones públicas de GitHub y los comentarios automáticos de infracciones.
factor de código
Acción de GitHub: Detectar todo
Acción de GitHub: Configurar detección
Las reglas personalizadas y los informes de terceros se pueden encontrar en nuestro Detekt Marketplace .
JetBrains: creación de IntelliJ + Kotlin
PMD, Checkstyle y ktlint: ideas para valores de umbral y reglas de estilo