2015-03-11 18 views
5

Próbuję użyć wtyczki findbugs w pliku build.gradle, aby nie zawieść osobistej kompilacji programisty, ale nie działa. Mimo że wtyczka tworzy raporty, kompilacja nie zawiedzie. Próbowałem "odtwarzać" z właściwością ignoreFailures, ale to też nie działało dobrze.Wtyczka programu Findbugs Gradle nie zawiedzie budowania

Użyłem tej odpowiedzi How to write a customized gradle task to not to ignore Findbugs violations but fail after the analysis is completed i działało, ale nie lubię analizować raportów i wydaje mi się, że to hack.

Czy nie ma prostego sposobu (jak powinno być "ignoreFailures"), aby nie powielać kompilacji Gradle za pomocą findbugs? Czy istnieją inne odpowiednie ramy, aby to zrobić?

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

Findbugs wcale nie zawodzi. nawet jeśli ignoreFailures = false (choć jest to domyślne) – Rivi

+0

Czy możesz podać przykład odwzorowujący problem? – Opal

+0

Dodano plik build.gradle – Rivi

Odpowiedz

2

Dobrze, jeśli znaleziska kwestie Findbugs nie są „o wysokim priorytecie” błędów, nie zostaną one zgłoszone jako ty jawnie ustawienie:

reportLevel = "high" 

Gradle documentation jest jasne, że:

próg priorytetem dla zgłaszania błędów. Jeśli ustawione na niski, zgłaszane są wszystkie błędy. Jeśli ustawione na średni (domyślny), zgłaszane są błędy o średnim i wysokim priorytecie. Jeśli ustawione na wysoki, zgłaszane są tylko błędy o wysokim priorytecie.

Więc moja rada jest taka, aby to zrobić w konfiguracji findbugs:

ignoreFailures = false 
reportLevel = "low" 

To działa na mnie.