Пользовательский Android Lint только для kotlin (без java)

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

Я хочу (например) написать правила для

Набор статей о скрытых расходах Kotlin (1, 2, 3)

P.S. Мне удалось сделать это в detekt, но я хотел бы использовать Android Lint по умолчанию.

[UPD] Я нашел com.android.tools.lint.checks.InteroperabilityDetector. Вероятно, можно написать что-то вроде KotlinVisitor (как JavaVisitor в этом классе). И этот KotlinVisitor будет просто оберткой вокруг KtVisitor?


person Anton Shkurenko    schedule 17.11.2018    source источник


Ответы (2)


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

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

person Tor Norbye    schedule 20.11.2018
comment
Вы имеете в виду 3.4 плагина Android Gradle? - person Anton Shkurenko; 20.11.2018

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

person Ramzy Hassan    schedule 17.11.2018
comment
Да, я знаю, но я хочу написать собственные правила lint, как здесь: tools.android. com/tips/lint-custom-rules - person Anton Shkurenko; 17.11.2018