Я решил написать пользовательские проверки 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
?
Я хочу (например) написать правила для
Котлин скрытых расходов набор статей ( 1 , 2 , 3 )
P.S. Мне удалось сделать это в detekt
, но я бы хотел использовать Android Lint по умолчанию.
[UPD]
Я нашел com.android.tools.lint.checks.InteroperabilityDetector
. Возможно, можно написать вроде KotlinVisitor
(как JavaVisitor
в этом классе). И это KotlinVisitor
будет просто обёрткой вокруг KtVisitor
?