2015-03-11 11 views
5

Ich versuche, Findbugs-Plugin in meiner Build.Gradle-Datei verwenden, um die Entwickler persönliche Build fehlschlagen, aber es funktioniert nicht. Obwohl das Plugin die Berichte erstellt, wird der Build nicht fehlschlagen. Ich habe versucht, mit der ignoreFailures Eigenschaft zu "spielen", aber das ging auch nicht gut.Findbugs Gradle Plug-in wird die Build nicht fehlschlagen

Ich habe diese Antwort verwendet How to write a customized gradle task to not to ignore Findbugs violations but fail after the analysis is completed, und es hat funktioniert, aber ich mag es nicht, die Berichte zu analysieren, und es fühlt sich an wie ein Hack.

Gibt es keinen einfachen Weg (wie 'ignoreFailures' sollte sein), den Gradle Build mit Hilfe von Findbugs zu scheitern? Gibt es dafür einen anderen geeigneten Rahmen?

Added die build.gradle Datei:

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') 
} 
} 
+0

Findbugs ist überhaupt nicht fehlgeschlagen. auch wenn ignoreFailures = false (obwohl es der Standardwert ist) – Rivi

+0

Können Sie ein Beispiel angeben, das das Problem reproduziert? – Opal

+0

Die build.gradle-Datei hinzugefügt – Rivi

Antwort

2

Nun, wenn die Probleme Findbugs Funde nicht „hohe Priorität“ Fehler sind, werden sie nicht berichtet werden, wie Sie explizit sind Einstellung:

reportLevel = "high" 

Die Gradle documentation ist klar, dass:

Die Priorität Schwelle für die Berichterstattung Fehler. Bei einem niedrigen Wert werden alle Fehler gemeldet. Bei der Einstellung "Mittel" (Standard) werden Bugs mittlerer und hoher Priorität gemeldet. Bei einem hohen Wert werden nur Fehler mit hoher Priorität gemeldet.

So ist meine Empfehlung diese Konfiguration in Ihrer findbugs zu tun:

ignoreFailures = false 
reportLevel = "low" 

, dass die Arbeit für mich.