Slackbot
01/08/2024, 11:47 AMSahil Kumar
01/09/2024, 3:55 AMsubprojects {
def exclusions = getExcludeModulesToScan()
if (!exclusions.contains(it.name)) {
apply plugin: "jacoco"
jacoco {
toolVersion = "0.8.10"
reportsDirectory = project.layout.buildDirectory.dir('jacoco').get()
}
afterEvaluate { project ->
tasks.withType(Test).configureEach {
jacoco {
includeNoLocationClasses = true
excludes = ['jdk.internal.*']
destinationFile = layout.buildDirectory.file("outputs/unit_test_code_coverage/devDebugUnitTest/testDevDebugUnitTest.exec").get().asFile
}
}
def buildTypes = android.buildTypes.collect { type -> type.name }
def productFlavors = android.productFlavors.collect { flavor -> flavor.name }
if (!productFlavors) productFlavors.add('')
productFlavors.each { productFlavorName ->
buildTypes.each { buildTypeName ->
def sourceName
if (!productFlavorName) {
sourceName = "${buildTypeName}"
} else {
sourceName = "${productFlavorName}${buildTypeName.capitalize()}"
}
def testTaskName = "test${sourceName.capitalize()}UnitTest"
tasks.register("${testTaskName}Coverage", JacocoReport) {
dependsOn "$testTaskName"
group = "Reporting"
description = "Generate Jacoco coverage reports on the ${sourceName.capitalize()} build."
def buildDirectory = layout.buildDirectory.get()
def javaTree = fileTree(dir: layout.buildDirectory.dir("intermediates/javac/$sourceName/classes").get(), excludes: fileFilter)
def kotlinTree = fileTree(dir: layout.buildDirectory.dir("tmp/kotlin-classes/$sourceName").get(), excludes: fileFilter)
classDirectories.from = files([javaTree], [kotlinTree])
def uiTestTree = fileTree(dir: "${layout.buildDirectory.get()}/outputs/code_coverage/devDebugAndroidTest/connected/", includes: ["**/*.ec"])
executionData.from = files(
uiTestTree,
"${buildDirectory}/outputs/unit_test_code_coverage/devDebugUnitTest/testDevDebugUnitTest.exec"
)
def coverageSourceDirs = ["src/main/java",
"src/$productFlavorName/java",
"src/$buildTypeName/java"]
sourceDirectories.from = files(coverageSourceDirs)
additionalSourceDirs.from = files(coverageSourceDirs)
reports {
html.required.set(true)
html.outputLocation.set(project.layout.buildDirectory.dir('reports/jacoco').get())
xml.required.set(true)
xml.outputLocation.set(file("${project.layout.buildDirectory.get()}/reports/jacoco_coverage.xml"))
}
}
}
}
}
}
}Sahil Kumar
01/09/2024, 3:58 AMSahil Kumar
01/09/2024, 3:58 AM