Пользовательский Android Lint только для kotlin (без Java) - PullRequest
0 голосов
/ 17 ноября 2018

Я решил написать пользовательские проверки 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?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

В версии 3.4 PSI Kotlin доступен непосредственно для пользовательских проверок пуха (он находится на пути к классам).Когда вы передаете UFile (абстракция UAST поверх Java и Kotlin AST), у него есть поле sourcePsi, которое дает вам KtFile.

Есть группа Google "lint-dev", которую вы можете прочитать /Присоединяйтесь, чтобы обсудить разработку Lint Check более подробно.

0 голосов
/ 17 ноября 2018

Я использую проверку Android lint для kotlin, она была улучшена с версии Android Studio 3.1 и предоставляет хорошие способы улучшить ваш код. и есть два способа настроить его сначала из графического интерфейса пользователя из настроек и перейти в подменю проверки и проверить все, что вам нужно. и он будет применяться во время вашей сборки или использовать пользовательскую конфигурацию, используя правило xml для kotlin я мог бы взглянуть на эту документацию

...