Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅适用于kotlin的自定义Android Lint(无java)_Java_Android_Kotlin_Lint - Fatal编程技术网

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

仅适用于kotlin的自定义Android Lint(无java),java,android,kotlin,lint,Java,Android,Kotlin,Lint,我决定为Android编写定制的lint检查,我对Android lint有很强的信心,所以我不想使用detekt或ktlint来检查代码(它们不能解析xml文件等,我想使用单一工具) 但是当我阅读Android Lint的文档时,我发现他们有了这个新的UAST和PSI(com.intellij.PSIpackage)的东西,当detekt使用它的子级时(仅kotlinorg.jetbrains.kotlin.PSI) 我的项目中没有java代码,我想编写特定于kotlin的lint规则 我知道

我决定为Android编写定制的lint检查,我对Android lint有很强的信心,所以我不想使用
detekt
ktlint
来检查代码(它们不能解析xml文件等,我想使用单一工具)

但是当我阅读Android Lint的文档时,我发现他们有了这个新的
UAST
PSI
com.intellij.PSI
package)的东西,当
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

或者如何在
检测器.UastScanner
中写入kotlin特定检查

我想(举例来说)为

Kotlin隐藏成本文章集(,)

另外,我在detekt中成功地做到了这一点,但我想使用默认的Android Lint

[UPD]
我找到了
com.android.tools.lint.checks.InteroperabilityDetector
。也许可以编写一种
KotlinVisitor
(在这个类中作为
JavaVisitor
)。而这个
KotlinVisitor
将只是包装
KtVisitor

我正在为kotlin使用android lint check,它自android studio 3.1以来得到了改进,并提供了改进代码的好方法。 有两种方法可以自定义它,第一种是从GUI的“设置”进入“检查”子菜单,然后检查您需要的任何内容。它将在您的构建过程中应用,或者使用kotlin的xml规则进行自定义配置
在3.4版中,Kotlin PSI可直接用于自定义lint检查(在类路径上)。当您收到一个UFile(Java和Kotlin AST之上的UAST抽象)时,它有一个sourcePsi字段,该字段为您提供KtFile


有一个“lint-dev”谷歌小组,你可以阅读/加入该小组来更详细地讨论lint-check的开发。

是的,我知道,但我想编写自定义lint规则如下:你是说android gradle插件的3.4版?