Я решил написать собственные проверки lint для Android, и я твердо верю в Android Lint, поэтому я не хочу использовать detekt
или ktlint
для проверки кода (они не могут анализировать файлы xml и т. д., и я хотел бы использовать один инструмент).
Но когда я прочитал документы для Android Lint, я обнаружил, что у них есть эти новые вещи UAST
и PSI
(пакет com.intellij.psi
), когда detekt
использует свой дочерний элемент (kotlin только org.jetbrains.kotlin.psi
).
У меня нет java-кода в моем проекте, и я хотел бы написать правила lint, специфичные для kotlin.
Я вижу, что у com.android.tools.lint.detector.api.Detector
есть метод createPsiVisitor
, который возвращает JavaElementVisitor
, и этот JavaElementVisitor
является подклассом com.intellij.psi.PsiElementVisitor
. Есть ли шанс, что вместо этого можно использовать org.jetbrains.kotlin.psi.KtVisitor
?
Или как я могу написать специальные проверки котлина в Detector.UastScanner
?
Я хочу (например) написать правила для
P.S. Мне удалось сделать это в detekt
, но я хотел бы использовать Android Lint по умолчанию.
[UPD] Я нашел com.android.tools.lint.checks.InteroperabilityDetector
. Вероятно, можно написать что-то вроде KotlinVisitor
(как JavaVisitor
в этом классе). И этот KotlinVisitor
будет просто оберткой вокруг KtVisitor
?