TreeWalker 检查不适用于 Kotlin/Gradle?

TreeWalker checks not working with Kotlin/Gradle?

我想使用 CheckStyle (7.1)(旧版本有同样的问题)作为 Kotlin 程序 运行 Gradle (2.14.1).

正常的 modules/checks(例如 NewlineAtEndOfFileFileTabCharacter、...)工作起来很有魅力,但是 none TreeWalker 的子模块(例如 AvoidStarImport)做。

gradle test 完成 BUILD SUCCESSFUL(我 200% 确定应该有样式错误),并且有 xx 个文件,但 build/reports/checkstyle/main.html 文件中有 0 个错误。

TreeWalker 不能与 Kotlin 一起使用吗?我找不到关于此的任何信息:/

build.gradle文件中的配置:

...

apply plugin: 'checkstyle'

...

checkstyle {
    toolVersion = "7.1"
    configFile = new File(rootDir, "checkstyle.xml")
    checkstyleMain.source = "src/main/kotlin"
    checkstyleMain.ignoreFailures = false
    checkstyleMain.showViolations = true
}

...

我找不到任何信息表明它 可以与 Kotlin 一起工作,所以假设它不能与 Kotlin 一起工作是合理的,特别是考虑到它是一个工具自动检查 Java 代码的过程。

the source code 可以明显看出 TreeWalker 仅在扩展名为 .java 的文件上激活:

    public TreeWalker() {
        setFileExtensions("java");
    }

此外,它在下面使用了 Java lexer,因此它不适用于任何其他语言。

正如您已经注意到的,所有其他检查都可以与任何 file/language.

一起使用

Checkstyle 不支持 Kotlin。

作为替代方案,IntelliJ IDEKotlin 1.1.50+ 插件支持根据项目 (announced here) 配置的设置检查 Kotlin 代码风格。

目前这只是一个 IDE 功能,但有一个正在开发中的 Gradle 插件具有相同的功能(尚不可用)。