Android 自定义 lint 规则不会检测到任何问题(对于导入)



我正在将lint项目应用于存在问题但没有检测到问题的应用程序模块。

lintChecks project(':customlint')

ImportsIssueRegistry.kt

class ImportsIssueRegistry : IssueRegistry() {
override val issues: List<Issue>
get() = listOf(
SyntheticImportIssue.ISSUE,
AndroidLogImportIssue.ISSUE
)
override val api: Int
get() = CURRENT_API
}

customlint/build.gradle

apply plugin: 'java-library'
apply plugin: 'kotlin'

ext.lintVersion = '26.4.2'
dependencies {
//noinspection DifferentStdlibGradleVersion
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
compileOnly "com.android.tools.lint:lint-api:$lintVersion"
compileOnly "com.android.tools.lint:lint-checks:$lintVersion"
testImplementation 'junit:junit:4.13-beta-3'
testImplementation "com.android.tools.lint:lint:$lintVersion"
testImplementation "com.android.tools.lint:lint-tests:$lintVersion"
testImplementation "com.android.tools:testutils:$lintVersion"
}
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
jar{
manifest{
attributes 'Lint-Registry-V2': '[package name].ImportsIssueRegistry'
}
}

我试过什么?

  • 正在查看 gradle 版本?我有最新版本 (3.4.2(
  • 尝试更改:Lint-Registry在自定义 lint 模块中Lint-Registry-V2
  • 还尝试将生成的jar添加到模块的build.gradle中:lintChecks fileTree(dir: 'libs', include: ['customlint.jar'] )

更新:

完整的代码可以在这里找到

有人请帮忙。

我遇到了同样的问题,但这是由于 lint 规则build.gradlebuild.gradle中缺少apply plugin: 'kotlin'引起的,这不是您的问题。

但是你可能想通过 ADS 的这个视频赶上最新版本的 API。谷歌真的应该更新他们的文档 😑😑😑

一些值得注意的差异:

  • 在资源文件中声明注册表
  • AGP 3.5.1

尝试使用lintPublish project(':customlint')而不是lintChecks project(':customlint')。在撰写本文时,谷歌的样本已经过时。

我认为您可以删除任何jar/Lint-Registry的东西

看看这里: https://github.com/tikurahul/lint-experiments

复制噪音检测器以帮助检查您的设置是否正确。

最新更新