Search code examples
androidandroid-gradle-pluginbuild.gradlefindbugsgradlew

Findbugs android gradle plugin


I have an android project. I want to introduce findbugs in my project as a gradle plugin. I tried to edit the project's build.gradle as below.

buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
           }
dependencies {
    classpath 'com.android.tools.build:gradle:1.0.0+'
    classpath 'io.fabric.tools:gradle:1.+'

    }
}

apply plugin: "java"
apply plugin: "findbugs"
findbugs {
  toolVersion = "2.0.1"
  sourceSets = [sourceSets.main]
  ignoreFailures = false
  reportsDir = file("$project.buildDir/findbugsReports")
  effort = "max"
  reportLevel = "high"
  includeFilter =     file("$rootProject.projectDir/config/findbugs/includeFilter.xml")
  excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
 }

Is this plugin correct? Does anything neeed to be added or removed? Now what should I do to get the results of this findbugs check? What gradle command should I use?


Solution

  • Just place this in your modules build.gradle.

    apply plugin: 'findbugs'
    
    task customFindbugs(type: FindBugs) {
        ignoreFailures = false
        effort = "max"
        reportLevel = "low"
        classes = files("$project.buildDir/intermediates/classes")
    
        // Use this only if you want exclude some errors
        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"
        }
    }
    
    build.dependsOn customFindbugs
    

    Then after changing directory to your project path from command line, use

    ./gradlew build
    

    The error report will be in $project.buildDir/outputs/findbugs/findbugs-output.html