如何输出 Kotlin 代码的弃用警告?

JJD*_*JJD 3 groovy lint deprecated kotlin android-lint

我在我的 Java/Kotlin Android 项目的app/build.gradle文件中使用以下配置片段:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
}
Run Code Online (Sandbox Code Playgroud)

编译项目时,它会在.java文件中生成详细的 Lint 警告输出。
我想对.kt文件实现相同的效果。我发现 Kotlin 有编译器选项

gradle.projectsEvaluated {
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            freeCompilerArgs = ["-Xlint:unchecked", "-Xlint:deprecation"]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是不支持编译器标志:

w:此版本的编译器不支持标志:-Xlint:unchecked
w:此版本的编译器不支持标志:-Xlint:deprecation

如何输出 Kotlin 代码的弃用警告?

Pau*_*cks 5

java编译器和kotlin编译器有完全不同的选项。-Xlintkotlinc 不存在该选项。您可以运行kotlinc -X以显示所有-X选项。

-Xjavac-arguments参数允许您通过 kotlinc 传递 javac 参数。例如:

kotlinc -Xjavac-arguments='-Xlint:unchecked -Xlint:deprecation' ...
Run Code Online (Sandbox Code Playgroud)

在你的 gradle 文件中,你可以构建一个只有一个参数的数组:

gradle.projectsEvaluated {
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            freeCompilerArgs = [
                "-Xjavac-arguments='-Xlint:unchecked -Xlint:deprecation'"
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其他语法也可能有效。

旁白:默认警告不包括这些吗?您可以通过添加此代码片段进行检查,以确保您没有抑制警告:

compileKotlin {
    kotlinOptions {
        suppressWarnings = false
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这似乎有效: `freeCompilerArgs = ["-Xjavac-arguments=['-Xlint:unchecked', '-Xlint:deprecation']"]` (2认同)