Градиентный стиль не может создать экземпляр AvoidConstantAsFirstOperandInConditionCheck при проверке стиля

Я сконфигурировал мой скрипт сборки Gradle для использования checkstyle вместе с добавленными проверками sventu checkstyle, однако при выполнении задачи checkstyleMain сборка завершается с ошибкой:

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

Это происходит, даже несмотря на то, что я включил банку в стиле стека в мою сборку. Ниже приведены соответствующие части моего сценария сборки:

repositories {
      mavenCentral()
      maven {
          url "http://sevntu-checkstyle.github.com/sevntu.checkstyle/maven2"
      }
   }

checkstyle {
    configFile = new File("etc/config/dev.xml");
    toolVersion = "6.8"
}

configurations {
    checkstyle
}

dependencies {  
    checkstyle "com.github.sevntu.checkstyle:sevntu-checks:1.13.4"
}

Обратите внимание, что сборка работает, когда я удаляю секцию зависимостей и тестирую ее с помощью XML-документа checkstyle, для которого не настроены дополнительные проверки sevntu. Моя конфигурация также похожа на пример в sevntu-checkstyle / checkstyle-samples

Что мне здесь не хватает?

1 ответ

Вот и я наконец понял это:

Получается, что пример по адресу https://github.com/sevntu-checkstyle/checkstyle-samples/blob/master/gradle-project/build.gradle работает, только если вы указали полный путь к классу пользовательских проверок в качестве имени для каждого пользовательского проверять.

Это связано с тем, что checkstyle не знает, где находятся пользовательские проверки в пакете. Оказывается, checkstyle может это выяснить, если вы включите в файл jar файл checkstyle_packages.xml, в котором описаны пакеты, содержащие чеки.

К сожалению, в com.github.sevntu.checkstyle такого файла нет:sevntu-check:1.13.4. Чтобы получить эту информацию, вам также необходимо включить "com.github.sevntu.checkstyle:sevntu-checkstyle-maven-plugin:1.13.4", который в основном не содержит ничего, кроме файла checkstyle_packages.xml.

Итак, я добавил это к своим зависимостям, и правила checkstyle наконец разбираются:

dependencies {
    checkstyle "com.github.sevntu.checkstyle:sevntu-checks:1.13.4",
               "com.github.sevntu.checkstyle:sevntu-checkstyle-maven-plugin:1.13.4"
}

Надеясь, что это спасет кого-то от боли в будущем:)

Другие вопросы по тегам