2015-03-24 22 views
9

Próbuję generować raporty za pomocą plugin findbugs do tego napisał poniżej skrypt gradle. Ustawiam folder docelowy dla raportów, ale odpowiedni folder nie są generowane.So, jak rozwiązać ten problem.Jak generować raporty o znaleziskach za pomocą skryptu gradle?

Potrafię generować raporty ręcznie za pomocą przycisku eksportu, ale chcę wygenerować ze skryptu gradle.

Czy można generować raporty ze skryptu gradle?

Gradle moja wersja - 2.2.1

task findbugs(type: FindBugs) { 
    ignoreFailures = true 
    effort = "max" 
    reportLevel = "high" 
    classes = files("${project.buildDir}/findbugs") 
    source 'src' 
    include '**/*.java' 
    exclude '**/gen/**' 

    reports { 
     xml.enabled = true 
     xml { 
      destination "$project.buildDir/reports/findbugs/findbugs.xml" 
      xml.withMessages true 
     } 
    } 
    classpath = files() 
} 

Odpowiedz

10

udało mi się uruchomić findbugs z najnowszymi Gradle z następującym fragmencie: Gradle skryptu

apply plugin: 'findbugs' 

task customFindbugs(type: FindBugs) { 
    ignoreFailures = true 
    effort = "default" 
    reportLevel = "medium" 
    classes = files("$project.buildDir/intermediates/classes") 
    excludeFilter = file("$rootProject.rootDir/config/findbugs/exclude.xml") 

    source = fileTree('src/main/java/') 
    classpath = files() 
    reports { 
     xml.enabled = false 
     xml.withMessages = true 
     html.enabled = !xml.isEnabled() 
     xml.destination "$project.buildDir/outputs/findbugs/findbugs-output.xml" 
     html.destination "$project.buildDir/outputs/findbugs/findbugs-output.html" 
    } 
} 
// UPDATE: renamed the task to customFindbugs and made it automatically be called when build is called 
build.dependsOn customFindbugs 

Moja exclude.xml wygląda następnie:

<FindBugsFilter> 
    <Match> 
     <Class name="~.*R\$.*"/> 
    </Match> 
    <Match> 
     <Class name="~.*Manifest\$.*"/> 
    </Match> 
    <Match> 
     <Class name="~.*_\$.*"/> 
    </Match> 
</FindBugsFilter> 

podczas gdy ostatnia kontrola służy do pomijania klas generowanych przez AndroidAnnota ia i najprawdopodobniej nie będzie wykorzystywać tę kontrolę ...

Po tym jestem w stanie uruchomić zadanie

./gradlew customFindbugs 

lub od aktualizacji mojego kodu po prostu

./gradlew build 
+0

Twój kod działa poprawnie, Jak napisać zadanie w build.gradle dla generacji JavaDoc? – Boopathi

+0

Przepraszam, Boopathi, nie znam na to szybkiej odpowiedzi. Musiałbym również przeprowadzić pewne badania. Zawsze korzystam z Android Studio (Narzędzia -> Generuj Javadoc). Nawiasem mówiąc, zaktualizowałem swój kod, aby móc domyślnie wywoływać zadanie podczas wywoływania ./gradlew build –

+0

Czy 'build.dependsOn customFindbugs' jest niezbędny? Mam na myśli './gradlew build' uruchamia zadanie' check', a to zależy od Findbugs. – Hesam