Свойство не существует ошибка в файле конфигурации checkstyle

я создаю проект Android с помощью Android Studio. В build.gradle приложения добавить:

apply from: '../config/quality.gradle'

тогда я создаю config dir с двумя файлами:quality.gradle как:

apply plugin: 'checkstyle'

task checkstyle(type: Checkstyle) {
    configFile file("${project.rootDir}/config/checkstyle.xml")
    source 'src'
    include '**/*.java'
    exclude '**/gen/**'
    classpath = files()
}

и checkstyle.xml как:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name="Checker">

    <module name="TreeWalker">

        <module name="NeedBraces">
            <property name="tokens" value="LITERAL_CASE, LITERAL_DEFAULT"/>
            <property name="allowSingleLineStatement" value="true"/>
        </module>

    </module>

</module>

под управлением gradle checkstyle дает мне следующую ошибку:

Executing external task 'checkstyle'...
:app:checkstyle FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkstyle'.
> Unable to create a Checker: cannot initialize module TreeWalker - Property 'allowSingleLineStatement' in module NeedBraces does not exist, please check the documentation

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

если я удалить строку:

<property name="allowSingleLineStatement" value="true"/>

это работает. Но чтение документация, первая версия тоже должна работать.

это случается подобное с:

<module name="EmptyCatchBlock">
    <property name="exceptionVariableName" value="expected|ignore"/>
</module>

что бросает мне:

* What went wrong:
Execution failed for task ':app:checkstyle'.
> Unable to create a Checker: cannot initialize module TreeWalker - Unable to instantiate EmptyCatchBlock

что я делаю неправильно или каким образом я недопонимаю документы?

1 ответов


на момент написания этой статьи, Gradle в использует Checkstyle 5.9 по умолчанию. The allowSingleLineStatement собственность только добавлено в Checkstyle 6.5. Таким образом, вы должны иметь возможность получить эту работу, используя более новую версию Checkstyle, как это:

checkstyle {
    configFile = file("${project.rootDir}/config/checkstyle.xml")
    toolVersion = '6.7'
}

к сожалению, документация по Checkstyle не версионная, поэтому на веб-сайте всегда есть только последние документы, что затрудняет понимание таких вещей.