【问题标题】:How to output deprecation warnings for Kotlin code?如何输出 Kotlin 代码的弃用警告?
【发布时间】:2019-07-25 19:39:54
【问题描述】:

我在我的 Java/Kotlin Android 项目的 app/build.gradle 文件中使用了以下配置 sn-p:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
}

编译项目时,它会在 .java 文件中生成详细的 Lint 警告输出。
我想为 .kt 文件实现相同的目标。我发现 Kotlin 有 compiler options:

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

但是不支持编译器标志:

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

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

【问题讨论】:

    标签: kotlin groovy deprecated lint android-lint


    【解决方案1】:

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

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

    kotlinc -Xjavac-arguments='-Xlint:unchecked -Xlint:deprecation' ...
    

    在您的 gradle 文件中,您可以构建一个包含一个参数的数组:

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

    其他语法也可以使用。

    除此之外:默认警告不包括这些吗?您可以通过添加此 sn-p 来检查以确保您没有抑制警告:

    compileKotlin {
        kotlinOptions {
            suppressWarnings = false
        }
    }
    

    【讨论】:

    • 这似乎有效:freeCompilerArgs = ["-Xjavac-arguments=['-Xlint:unchecked', '-Xlint:deprecation']"]
    猜你喜欢
    • 2015-01-30
    • 2023-04-03
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多