仅适用于kotlin的自定义Android Lint(无Java)

时间:2018-11-17 09:28:05

标签: java android kotlin lint

我决定为Android编写自定义的lint检查,并且我坚信Android Lint,所以我不想使用detektktlint来检查代码(它们无法解析) xml文件等,我想使用一个工具。

但是当我阅读了有关Android Lint的文档时,发现UAST使用{@ 1}}和PSIcom.intellij.psi软件包)这个新东西时,子(只有科特琳detekt)。

我的项目中没有Java代码,我想编写kotlin特定的皮棉规则。

我看到org.jetbrains.kotlin.psi的方法com.android.tools.lint.detector.api.Detector返回了createPsiVisitor,而这个JavaElementVisitorJavaElementVisitor的子类。是否有可能改用com.intellij.psi.PsiElementVisitor

或者如何在org.jetbrains.kotlin.psi.KtVisitor中编写Kotlin专用支票?

例如,我要为

编写规则
  

科特琳的隐藏成本文章集(123

P.S。我在Detector.UastScanner中成功完成了此操作,但是我想使用默认的Android Lint。

[UPD] 我找到了detekt。可能可以编写com.android.tools.lint.checks.InteroperabilityDetector(在该类中为KotlinVisitor)。而这个JavaVisitor只是包装在KotlinVisitor周围?

2 个答案:

答案 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