Dies ist ein Plugin für DETEKT, ein statischer Codeanalysator für Kotlin, mit dem überprüft werden kann, ob Betonklassen gemäß Anmerkungen, die auf Basistypen angewendet wurden , implementiert werden.
Die folgenden Detekten sind enthalten:
DataClass : Erfordert die Erweiterung der Klassen auf Datenklassen oder Objektdeklarationen. Dies garantiert eine vorhersehbare Standardimplementierung für equals und hashcode -Implementierungen, dh die Wertgleichheit anstelle der Referenzgleichheit.Immutable : Erfordert Klassen oder Verlängerungsklassen unveränderlich; Sie enthalten möglicherweise keine veränderlichen Eigenschaften (var) oder Eigenschaften von veränderlichen Typen (Typen mit VAR -Eigenschaften).Aufgrund der Art dieses Plugins wird ein spezifischer Geschmack der semantischen Versioning verwendet, was für Linter sinnvoller ist. Jedes kleinere Update kann mehr Fehler als die vorherige Version melden.
Laden Sie das Plugin über den DETEKT Gradle -Konfigurationsblock:
Groovy DSL
detekt {
dependencies {
detektPlugins " dk.cachet.detekt.extensions:detekt-verify-implementation:1.2.5 "
}
} Da dieses Plugin die Typauflösung verwendet, werden die Regeln nicht ausgeführt, wenn die grundlegende detekt -Aufgabe verwendet wird. Verwenden Sie detektMain oder eine benutzerdefinierte DETKT -Aufgabe gemäß der DEPEKT -Dokumentation.
Standardmäßig werden die Regeln in der DEPKT -Konfigurationsdatei nicht aktiviert. Um eine Regel zu aktivieren, setzen Sie sie auf active ein und geben Sie den vollständig qualifizierten Namen der annotationClass an, die bestimmt, welche konkreten Klassen dies überprüfen soll. Zum Beispiel:
verify-implementation :
DataClass :
active : true
annotationClass : " dk.cachet.carp.common.ImplementAsDataClass "
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable " Falls die Annotationsklasse nicht gefunden werden kann und die Regel aktiv ist, wird eine IllegalStateException geworfen.
Mit assumeNoAnnotations können Sie eine Liste vollständig qualifizierter Typnamen angeben, für die angenommen wird, dass die Annotation nicht auf sie angewendet wird. Dies kann nützlich sein, wenn das Plugin Klassen nicht analysiert, von denen bekannt ist, dass sie die Annotation nicht tragen.
verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
assumeNoAnnotations : ['kotlin.Any']Weitere regelspezifische Konfigurationsoptionen werden als nächstes beschrieben.
assumeImmutable kann vollständig qualifizierte Klassennamen auflisten, die nicht überprüft werden und als unveränderlich angenommen werden. Dies kann nützlich sein, wenn das Plugin Klassen nicht analysiert, von denen Sie wissen, dass sie unveränderlich sind. Beispielkonfiguration: verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
includes : ['**/domain/**']
assumeImmutable : [
' dk.cachet.carp.common.DateTime ' ,
' kotlinx.serialization.json.Json '
]