هذا مكون إضافي لـ 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.
بشكل افتراضي ، لا يتم تنشيط القواعد في ملف تكوين 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 '
]