// get class dirs for project dependencies
FileTree getJacocoClassDirs(List projects) {
def classDirs = fileTree(dir: "${buildDir}/classes/debug", exclude: '**/R*.class')
projects.each {
def projBuildDir = project(it).buildDir
classDirs += fileTree(dir: "${projBuildDir}/classes/release", exclude: '**/R*.class')
}
return classDirs
}
// get source dirs for project dependencies
FileCollection getJacocoSrcDirs(List projects) {
Set srcDirs = android.sourceSets.main.java.srcDirs
projects.each {
def projDir = project(it).projectDir
srcDirs.add("${projDir}/src") // assume that android main sourceSets is here
}
return files(srcDirs)
}
// generate coverage report for this project and all its project dependencies
task jacocoTestReport(type: JacocoReport, dependsOn: test) {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/reports/coverage"
}
// TODO: automatically get project dependencies recursively
def dependencies = [] // your gradle project dependencies go here
classDirectories = getJacocoClassDirs(dependencies)
sourceDirectories = getJacocoSrcDirs(dependencies)
executionData = files("${buildDir}/jacoco/testDebug.exec")
}