У меня есть следующий файл сборки Gradle: https://github.com/markuswustenberg/jsense/blob/a796055f984ec309db3cc0f3e8340cbccac36e4e/jsense-protobuf/build.gradle, который включает в себя:
checkstyle {
// TODO The excludes are not working, ignore failures for now
//excludes '**/org/jsense/serialize/protobuf/gen/**'
ignoreFailures = true
showViolations = false
}
findbugs {
// TODO The excludes are not working, ignore failures for now
//excludes '**/org/jsense/serialize/protobuf/gen/**'
ignoreFailures = true
}
Как вы можете видеть, я пытаюсь исключить автоматически сгенерированный код в пакете org.jsense.serialize.protobuf.gen. Я не могу определить формат строк, заданных параметру исключает, и документация не очень помогает: http://www.gradle.org/docs/1.10/dsl/org.gradle.api.plugins.quality.FindBugs.html#org.gradle.api.plugins.quality.FindBugs:excludes (он просто говорит: "Набор исключить шаблоны." ).
Итак, мой вопрос: как следует исключать строки шаблонов для форматирования плагинов Findbugs и Checkstyle?
Я запускаю Gradle 1.10.
Спасибо!
РЕДАКТИРОВАТЬ 1: я получил Checkstyle, исключая работу со следующим:
tasks.withType(Checkstyle) {
exclude '**/org/jsense/serialize/protobuf/gen/**'
}
Однако использование точного исключения в плагине Findbugs не работает:
tasks.withType(FindBugs) {
exclude '**/org/jsense/serialize/protobuf/gen/*'
}
EDIT 2: принятый ответ работает, а также использует XML файл и фильтрует его так:
findbugs {
excludeFilter = file("$projectDir/config/findbugs/excludeFilter.xml")
}
и
<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<Package name="org.jsense.serialize.protobuf.gen"/>
</Match>
</FindBugsFilter>
EDIT 3: это отлично работает, и XML файл не требуется:
def excludePattern = 'org/jsense/serialize/protobuf/gen/'
def excludePatternAntStyle = '**/' + excludePattern + '*'
tasks.withType(FindBugs) {
classes = classes.filter {
!it.path.contains(excludePattern)
}
}
tasks.withType(Checkstyle) {
exclude excludePatternAntStyle
}
tasks.withType(Pmd) {
exclude excludePatternAntStyle
}