Как скомпилировать проект с правилами Google Checkstyle с помощью gradle?
Я пытаюсь использовать конфигурацию Google checkstyle (https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml ) но я постоянно получаю ошибку на gradle check
:
Unable to create a Checker: cannot initialize module TreeWalker - Unable to instantiate EmptyCatchBlock
Я использовал Gradle для построения проекта. Ниже мой Gradle в.строить.
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'checkstyle'
sourceCompatibility = 1.8
version = '1.0'
checkstyle {
toolVersion = "6.3"
}
task "create-dirs" << {
sourceSets*.java.srcDirs*.each { it.mkdirs() }
sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}
jar {
manifest {
attributes 'Implementation-Title': 'xyz',
'Implementation-Version': 0.01
}
}
repositories {
mavenCentral()
}
dependencies {
compile (
['org.apache.logging.log4j:log4j-api:2.2'],
['org.apache.logging.log4j:log4j-core:2.2']
)
testCompile(
['junit:junit:4.11'],
['org.mockito:mockito-core:1.+']
)
}
test {
systemProperties 'property': 'value'
}
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
Кроме того, когда я пытаюсь добавить XML-файл конфигурации для плагина Checkstyle в IDEA, я получаю аналогичную ошибку, но с трассировкой стека:
org.infernus.idea.checkstyle.exception.CheckStylePluginException: <html><b>The CheckStyle rules file could not be loaded.</b><br>cannot initialize module TreeWalker - Unable to instantiate EmptyCatchBlock</html>
at org.infernus.idea.checkstyle.checker.CheckerFactory.blacklistAndShowMessage(CheckerFactory.java:234)
at org.infernus.idea.checkstyle.checker.CheckerFactory.createChecker(CheckerFactory.java:188)
at org.infernus.idea.checkstyle.checker.CheckerFactory.getOrCreateCachedChecker(CheckerFactory.java:98)
at org.infernus.idea.checkstyle.checker.CheckerFactory.getChecker(CheckerFactory.java:73)
at org.infernus.idea.checkstyle.checker.CheckerFactory.getChecker(CheckerFactory.java:41)
Я не могу понять, что я делаю не так. Любая помощь была бы будьте оценены.
Версия Gradle: 2.22 ответа:
Проблема заключается в том, что
com.puppycrawl.tools.checkstyle.checks.blocks.EmptyCatchBlockCheck
действительно был добавлен в checkstyle, но для версии 6.4-SNAPSHOT. Как это можно видеть в checkstyle repository (pom.xml history) версия 6.4-SNAPSHOT был представлен 02.02.2015, А классEmptyCatchBlockCheck
был создан 18.02.2015.Gradle по-прежнему использует версию 6.3, как и в следующей выдержке из журнала:
Таким образом, просто нет класса, который вы хотели бы использовать.:checkstyleMain Download https://repo1.maven.org/maven2/com/puppycrawl/tools/checkstyle/6.3/checkstyle-6.3.pom
В соответствии с docs checkstyle classpath может быть задан с помощью свойства
checkstyleClasspath
- Вы можете попробовать настроить его вручную.Я также подготовил демо-версию с версией 6.4-SNAPSHOT, ее можно найти здесь. Jar Checkstyle был построен с помощью
mvn clean package
с источником, взятым из этого РЕПО.