apply plugin: "jacoco" jacoco { toolVersion "0.8.7" reportsDirectory = file("$buildDir/reports") } tasks.withType(Test) { jacoco.includeNoLocationClasses = true jacoco.excludes = ['jdk.internal.*'] } task jacocoTestReport(type: JacocoReport) { group = "Reporting" description = "Generate Jacoco coverage reports" reports { xml.enabled = true html.enabled = true } def excludes = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*', '**/*Module.*', '**/*Dagger*.*', '**/*MembersInjector*.*', '**/*_Provide*Factory*.*', '**/*_Factory.*'] classDirectories.setFrom(fileTree( dir: "$buildDir/intermediates/classes/debug", excludes: excludes ) + fileTree( dir: "$buildDir/tmp/kotlin-classes/fdroidDebug", excludes: excludes )) sourceDirectories.setFrom(files([ "src/main/java", "src/fdroid/java" ])) executionData.setFrom(fileTree( dir: project.projectDir, includes: ["**/*.exec", "**/*.ec"] )) }