我决定为Android编写自定义的lint检查,并且我坚信Android Lint,所以我不想使用detekt
或ktlint
来检查代码(它们无法解析) xml文件等,我想使用一个工具。
但是当我阅读了有关Android Lint的文档时,发现UAST
使用{@ 1}}和PSI
(com.intellij.psi
软件包)这个新东西时,子(只有科特琳detekt
)。
我的项目中没有Java代码,我想编写kotlin特定的皮棉规则。
我看到org.jetbrains.kotlin.psi
的方法com.android.tools.lint.detector.api.Detector
返回了createPsiVisitor
,而这个JavaElementVisitor
是JavaElementVisitor
的子类。是否有可能改用com.intellij.psi.PsiElementVisitor
?
或者如何在org.jetbrains.kotlin.psi.KtVisitor
中编写Kotlin专用支票?
例如,我要为
编写规则 P.S。我在Detector.UastScanner
中成功完成了此操作,但是我想使用默认的Android Lint。
[UPD]
我找到了detekt
。可能可以编写com.android.tools.lint.checks.InteroperabilityDetector
(在该类中为KotlinVisitor
)。而这个JavaVisitor
只是包装在KotlinVisitor
周围?
答案 0 :(得分:4)
在3.4版中,Kotlin PSI可直接用于自定义棉绒检查(位于类路径上)。当您收到一个UFile(位于Java和Kotlin AST之上的UAST抽象)时,它具有一个sourcePsi字段,该字段为您提供KtFile。
有一个“ lint-dev” Google小组,您可以阅读/加入该小组,以更详细地讨论皮棉支票的开发。
答案 1 :(得分:0)
我正在为kotlin使用android lint检查,自android studio 3.1以来已得到改进,并提供了改进代码的好方法。 有两种方法可以通过设置从GUI进行自定义,然后转到检查子菜单并检查所需内容。它将在构建过程中应用,或使用针对Kotlin的xml规则使用自定义配置 我可以看看这个documentation