【发布时间】:2019-04-20 08:27:42
【问题描述】:
我决定为 Android 编写自定义 lint 检查,并且我坚信 Android Lint,所以我不想使用 detekt 或 ktlint 来检查代码(它们无法解析 xml 文件等我想使用一个工具)。
但是当我阅读 Android Lint 的文档时,我发现他们有这个新的 UAST 和 PSI(com.intellij.psi 包)的东西,当 detekt 使用它的孩子时(仅限 Kotlin org.jetbrains.kotlin.psi) .
我的项目中没有 java 代码,我想编写 kotlin 特定的 lint 规则。
我明白了,com.android.tools.lint.detector.api.Detector 有一个方法createPsiVisitor,它返回JavaElementVisitor,而这个JavaElementVisitor 是com.intellij.psi.PsiElementVisitor 的子类。有没有可能改用org.jetbrains.kotlin.psi.KtVisitor?
或者我如何在Detector.UastScanner 中编写 kotlin 特定检查?
我想(例如)为
写规则附:我在detekt 中成功做到了这一点,但我想使用默认的 Android Lint。
[UPD]
我找到了com.android.tools.lint.checks.InteroperabilityDetector。可能可以写成KotlinVisitor(在这个类中就像JavaVisitor)。而这个KotlinVisitor 将只是KtVisitor 的包装?
【问题讨论】: