apply plugin: "jacoco"

jacoco {
    toolVersion "0.8.1"
}

tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
}

// run ./gradlew clean createDebugCoverageReport jacocoTestReport
task jacocoTestReport(type: JacocoReport) {

    group = "Reporting"
    description = "Generate Jacoco coverage reports"

    reports {
        xml.enabled = true
        html.enabled = true
    }

    def fileFilter = ["**/R.class",
                      "**/R\$*.class",
                      "**/BuildConfig.*",
                      "**/Manifest*.*",
                      "android/**/*.*",
                      "**/Lambda.class",
                      "**/*Lambda.class",
                      "**/*Lambda*.class",
                      "**/*Lambda*.*",
                      "**/*Builder.*"
    ]

    def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
    def mainSrc = "${project.projectDir}/src/main/java"

    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: project.projectDir, includes: ["**/*.exec" , "**/*.ec"])
}
