Este es un complemento para Detekt, un analizador de código estático para Kotlin, que permite verificar si las clases concretas se implementan como se especifican de acuerdo con las anotaciones aplicadas a los tipos de base .
Se incluyen las siguientes reglas de Detekt:
DataClass : requiere extender las clases para ser clases de datos u declaraciones de objetos. Esto garantiza una implementación predeterminada predecible para las implementaciones equals y hashcode , es decir, la igualdad de valor en lugar de la igualdad referencial.Immutable : requiere clases o clases de extensión para ser inmutables; Es posible que no contengan propiedades mutables (VAR) o propiedades de tipos mutables (tipos con propiedades VAR).Debido a la naturaleza de este complemento, se utiliza un sabor específico de versiones semánticas que tiene más sentido para los enlace. Cualquier actualización menor puede informar más errores que la versión anterior.
Cargue el complemento a través del bloque de configuración de Gradle Detekt:
Groovy DSL
detekt {
dependencies {
detektPlugins " dk.cachet.detekt.extensions:detekt-verify-implementation:1.2.5 "
}
} Dado que este complemento usa la resolución de tipo, las reglas no se ejecutarán cuando se usan la tarea básica detekt . Use detektMain o una tarea de Detekt personalizada, según la documentación de Detekt.
Por defecto, las reglas no se activan en el archivo de configuración de Detekt. Para habilitar una regla, configúrelo en active y especifique el nombre completamente calificado de la annotationClass que determina qué clases concretas verificar. Por ejemplo:
verify-implementation :
DataClass :
active : true
annotationClass : " dk.cachet.carp.common.ImplementAsDataClass "
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable " En caso de que la clase de anotación no se pueda encontrar y la regla esté activa, se lanzará una IllegalStateException .
Utilizando assumeNoAnnotations , puede especificar una lista de nombres de tipo totalmente calificados para los cuales se supone que no tienen la anotación aplicada a ellos. Esto puede ser útil cuando el complemento no analiza las clases que se sabe que no llevan la anotación.
verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
assumeNoAnnotations : ['kotlin.Any']A continuación se describen opciones de configuración específicas de reglas adicionales.
assumeImmutable puede enumerar los nombres de clase totalmente calificados que no se verificarán y se supone que son inmutables. Esto puede ser útil cuando el complemento no puede analizar clases que usted sabe que es inmutable. Configuración de ejemplo: verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
includes : ['**/domain/**']
assumeImmutable : [
' dk.cachet.carp.common.DateTime ' ,
' kotlinx.serialization.json.Json '
]