นี่คือปลั๊กอินสำหรับ Detekt ตัววิเคราะห์รหัสแบบคงที่สำหรับ Kotlin ซึ่งช่วยให้สามารถตรวจสอบได้ว่ามีการใช้คลาสคอนกรีตตามที่ระบุ ตามคำอธิบายประกอบที่ใช้กับประเภทฐาน หรือไม่
รวมกฎ detekt ต่อไปนี้:
DataClass : ต้องมีการขยายคลาสให้เป็นคลาสข้อมูลหรือการประกาศวัตถุ สิ่งนี้รับประกันการใช้งานเริ่มต้นที่คาดการณ์ได้สำหรับการใช้งาน equals และ hashcode เช่นค่าความเท่าเทียมกันของค่าแทนที่จะเป็นความเท่าเทียมกันในการอ้างอิงImmutable : ต้องใช้ชั้นเรียนหรือขยายชั้นเรียนให้เปลี่ยนไม่ได้ พวกเขาอาจไม่มีคุณสมบัติที่ไม่แน่นอน (var) หรือคุณสมบัติของประเภทที่ไม่แน่นอน (ประเภทที่มีคุณสมบัติ var)เนื่องจากลักษณะของปลั๊กอินนี้จึงมีการใช้รสชาติที่เฉพาะเจาะจงของการกำหนดเวอร์ชันความหมายซึ่งทำให้รู้สึกมากขึ้นสำหรับผ้าลินิน การอัปเดตเล็กน้อยใด ๆ อาจรายงานข้อผิดพลาดมากกว่ารุ่นก่อนหน้า
โหลดปลั๊กอินผ่านบล็อกการกำหนดค่า Detekt Gradle:
groovy dsl
detekt {
dependencies {
detektPlugins " dk.cachet.detekt.extensions:detekt-verify-implementation:1.2.5 "
}
} เนื่องจากปลั๊กอินนี้ใช้ความละเอียดประเภทกฎจะไม่ทำงานเมื่อใช้งานพื้นฐาน detekt ใช้ detektMain หรืองาน Detekt ที่กำหนดเองตามเอกสารประกอบ
โดยค่าเริ่มต้นกฎจะไม่เปิดใช้งานในไฟล์การกำหนดค่า Detekt ในการเปิดใช้งานกฎให้ตั้งค่าเป็น active และระบุชื่อที่ผ่านการรับรองอย่างสมบูรณ์ของ annotationClass ซึ่งกำหนดคลาสคอนกรีตที่จะตรวจสอบ ตัวอย่างเช่น:
verify-implementation :
DataClass :
active : true
annotationClass : " dk.cachet.carp.common.ImplementAsDataClass "
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable " ในกรณีที่ไม่สามารถพบคลาสคำอธิบาย IllegalStateException ได้และกฎนั้นใช้งานได้
การใช้ assumeNoAnnotations คุณสามารถระบุรายการชื่อประเภทที่มีคุณสมบัติครบถ้วนซึ่งสันนิษฐานว่าพวกเขาไม่มีคำอธิบายประกอบที่นำไปใช้กับพวกเขา สิ่งนี้อาจมีประโยชน์เมื่อปลั๊กอินไม่สามารถวิเคราะห์คลาสที่ทราบว่าไม่ต้องใส่คำอธิบายประกอบ
verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
assumeNoAnnotations : ['kotlin.Any']ตัวเลือกการกำหนดค่าเฉพาะกฎเพิ่มเติมจะอธิบายไว้ต่อไป
assumeImmutable สามารถแสดงชื่อคลาสคลาสที่ผ่านการรับรองได้อย่างสมบูรณ์ซึ่งจะไม่ได้รับการตรวจสอบและสันนิษฐานว่าไม่เปลี่ยนรูป สิ่งนี้อาจมีประโยชน์เมื่อปลั๊กอินไม่สามารถวิเคราะห์คลาสที่คุณรู้ว่าไม่เปลี่ยนรูป ตัวอย่างการกำหนดค่า: verify-implementation :
Immutable :
active : true
annotationClass : " dk.cachet.carp.common.Immutable "
includes : ['**/domain/**']
assumeImmutable : [
' dk.cachet.carp.common.DateTime ' ,
' kotlinx.serialization.json.Json '
]