Градиентный стиль не может создать экземпляр 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"
}
Надеясь, что это спасет кого-то от боли в будущем:)