Я использую detekt для запуска проверки пуха в моем Android проекте. Следуя информации в разделе «Расширение Detekt» на сайте проекта, я пытаюсь создать собственную проверку пуха, чтобы проверить в моих классах публичные c свойства типа MutableLiveData
.
На основе рассмотрения других правил в проекте я до сих пор придумал это:
class PublicMutableLiveData(config: Config = Config.empty) : Rule(config) {
override val issue = Issue(javaClass.simpleName,
Severity.Maintainability,
"MutableLi veData must be private", Debt.TEN_MINS)
override fun visitProperty(property: KtProperty) {
if (property.isPublic && property.anyDescendantOfType<androidx.lifecycle.MutableLiveData>()) {
report(property)
}
super.visitProperty(property)
}
private fun report(property: KtNamedDeclaration) {
report(
CodeSmell(issue, Entity.from(property), "The property ${property.nameAsSafeName} of type MutableLiveData should not be public")
)
}
}
Пока я не знаю, является ли isAnyDescendantOfType<>()
правильной проверкой для меня, но я не могу проверить это, потому что я не знаю, как сделать библиотеку android -specifi c, содержащую класс MutableLiveData
, доступной для Detekt
(androidx.lifecycle: lifecycle-viewmodel-ktx: 2.2.0).
У меня небольшой опыт работы с не Android JVM-проектами, и я не совсем понимаю, как сделать это доступным здесь, чтобы правильно указать желаемый тип без предупреждения. Кто-нибудь может помочь?