Плагин Findbugs Gradle не подведет сборку

Я пытаюсь использовать плагин findbugs в моем файле build.gradle, чтобы провалить личную сборку разработчиков, но он не работает. Хотя плагин создает отчеты, сборка не удастся. Я пытался "поиграть" со свойством ignoreFailures, но это тоже не получилось.

Я воспользовался этим ответом Как написать настраиваемое задание на сортировку, чтобы не игнорировать нарушения Findbugs, но потерпеть неудачу после того, как анализ завершен, и это сработало, но я не люблю разбирать отчеты и похоже на хак.

Нет ли простого способа (как должно быть в ignoreFailures) завершить сборку Gradle с помощью findbugs? Есть ли другая подходящая основа для этого?

Добавлен файл build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.bmuschko:gradle-tomcat-plugin:2.1"
    }
}

subprojects {
apply plugin:'java'
apply plugin:'eclipse'


apply plugin: "findbugs"
findbugs {
    reportsDir = file("$project.buildDir/findbugsReports")
    effort = "max"
    reportLevel = "high"
}

build.dependsOn 'check'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

repositories {
    maven { url "http://repo.maven.apache.org/maven2" }
}

dependencies {

    compile group: 'javax.validation', name: 'validation-api', version:'1.1.0.Final'
    compile group: 'org.springframework.security', name: 'spring-security-web', version: "${VERSION_SPRING_SECURITY}"
    compile group: 'org.springframework.security', name: 'spring-security-config', version: "${VERSION_SPRING_SECURITY}"

    // Spring dependency injection container:
    compile (group: 'org.springframework', name: 'spring-context', version:"${VERSION_SPRING}") {
        exclude(module: 'commons-logging')
    }

    compile group: 'javax.inject', name: 'javax.inject', version:'1'
    compile group: 'org.slf4j', name: 'slf4j-api', version:'1.7.10'
    runtime group: 'org.slf4j', name: 'jcl-over-slf4j', version:'1.7.10'
    runtime group: 'org.slf4j', name: 'slf4j-log4j12', version:'1.7.10'
    runtime group: 'org.aspectj', name: 'aspectjrt', version:"${VERSION_ASPECTJ}"
    runtime group: 'org.aspectj', name: 'aspectjweaver', version:"${VERSION_ASPECTJ}"

    testCompile group: 'org.springframework', name: 'spring-test', version:"${VERSION_SPRING}"
    testCompile group: 'junit', name: 'junit', version:'4.12'



    compile group: 'commons-pool', name: 'commons-pool', version:'1.6'

    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version:'2.5.1'
    compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-mrbean', version:'2.5.1'

}
}

project(':server:application'){
dependencies {

    compile(project(':server:services')) {
        exclude(module: ':server:data-access')
    }
    compile group: 'org.springframework', name: 'spring-webmvc', version:"${VERSION_SPRING}"
    compile project(':server:dto'), project(':server:utils'), project(':server:model')
}
}

1 ответ

Хорошо, если проблемы, найденные Findbugs, не являются ошибками с "высоким приоритетом", они не будут сообщаться, как вы явно устанавливаете:

reportLevel = "high"

В документации Gradle об этом ясно сказано:

Порог приоритета для сообщения об ошибках. Если установлено значение low, сообщается обо всех ошибках. Если установлено среднее (по умолчанию), сообщается об ошибках со средним и высоким приоритетом. Если установлено высокое значение, сообщается только об ошибках с высоким приоритетом.

Поэтому я рекомендую сделать это в вашей конфигурации findbugs:

ignoreFailures = false
reportLevel = "low"

Это работает для меня.

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