Ini adalah plugin untuk Detekt, penganalisa kode statis untuk Kotlin, yang memungkinkan memverifikasi apakah kelas konkret diimplementasikan sebagaimana ditentukan sesuai dengan anotasi yang diterapkan pada jenis dasar .
Aturan Detekt berikut sudah termasuk:
DataClass : Membutuhkan kelas yang diperluas untuk menjadi kelas data atau deklarasi objek. Ini menjamin implementasi default yang dapat diprediksi untuk implementasi kode equals dan hashcode , yaitu, nilai kesetaraan alih -alih kesetaraan referensial.Immutable : Membutuhkan kelas atau memperluas kelas untuk tidak dapat diubah; Mereka mungkin tidak mengandung sifat yang dapat berubah (var) atau sifat tipe yang dapat berubah (tipe dengan properti var).Karena sifat plugin ini, rasa spesifik dari versi semantik digunakan yang lebih masuk akal untuk linter. Pembaruan kecil apa pun dapat melaporkan lebih banyak kesalahan daripada rilis sebelumnya.
Muat plugin melalui blok konfigurasi lulusan Detekt:
DSL Groovy
detekt {
dependencies {
detektPlugins " dk.cachet.detekt.extensions:detekt-verify-implementation:1.2.5 "
}
} Karena plugin ini menggunakan resolusi tipe, aturan tidak akan berjalan saat menggunakan tugas dasar detekt . Gunakan detektMain atau tugas Detekt khusus, sesuai dokumentasi Detekt.
Secara default, aturan tidak diaktifkan dalam file konfigurasi Detekt. Untuk mengaktifkan aturan, atur ke active dan tentukan nama yang sepenuhnya memenuhi syarat dari Klass annotationClass yang menentukan kelas konkret mana yang harus diverifikasi. Misalnya:
verify-implementation :
DataClass :
active : true
annotationClass : " dk.cachet.carp.common.ImplementAsDataClass "
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable " Dalam hal kelas anotasi tidak dapat ditemukan dan aturannya aktif, IllegalStateException akan dilemparkan.
Menggunakan assumeNoAnnotations , Anda dapat menentukan daftar nama jenis yang memenuhi syarat yang diasumsikan mereka tidak memiliki anotasi yang diterapkan pada mereka. Ini mungkin berguna ketika plugin gagal menganalisis kelas yang diketahui tidak membawa anotasi.
verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
assumeNoAnnotations : ['kotlin.Any']Opsi konfigurasi khusus aturan tambahan dijelaskan selanjutnya.
assumeImmutable dapat mencantumkan nama kelas yang sepenuhnya memenuhi syarat yang tidak akan diverifikasi dan diasumsikan tidak berubah. Ini mungkin berguna ketika plugin gagal menganalisis kelas yang Anda tahu tidak dapat diubah. Contoh konfigurasi: verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
includes : ['**/domain/**']
assumeImmutable : [
' dk.cachet.carp.common.DateTime ' ,
' kotlinx.serialization.json.Json '
]