gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 07:42:25 25 4
gpt4 key购买 nike

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

但是当我阅读 Android Lint 的文档时,我发现他们有这个新的 UASTPSI (com.intellij.psi package) 东西,当 detekt 使用它的 child 时(kotlin only org.jetbrains.kotlin.psi)。

我的项目中没有 java 代码,我想编写特定于 kotlin 的 lint 规则。

我明白了,com.android.tools.lint.detector.api.Detector 有一个方法 createPsiVisitor,它返回 JavaElementVisitor,并且此 JavaElementVisitorcom.intellij.psi.PsiElementVisitor 的子类。是否有可能改用 org.jetbrains.kotlin.psi.KtVisitor

或者如何在 Detector.UastScanner 中编写 kotlin 特定检查?

我想(例如)为

编写规则

Kotlin hidden costs set of articles (1, 2, 3)

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

[更新]我找到了 com.android.tools.lint.checks.InteroperabilityDetector。可能可以编写有点 KotlinVisitor(如此类中的 JavaVisitor)。而这个 KotlinVisitor 将只是 KtVisitor 的包装器?

最佳答案

在 3.4 版中,Kotlin PSI 可直接用于自定义 lint 检查(位于类路径中)。当您收到一个 UFile(Java 和 Kotlin AST 之上的 UAST 抽象)时,它有一个 sourcePsi 字段,可以为您提供 KtFile。

有一个“lint-dev”Google 群组,您可以阅读/加入以更详细地讨论 lint 检查开发。

关于java - 仅适用于 kotlin 的自定义 Android Lint(无 java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53349893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com