@@ -31,39 +31,35 @@ class RootCoveragePlugin : Plugin<Project> {
3131 project.afterEvaluate { createCoverageTaskForRoot(it) }
3232 }
3333
34- private fun getFileFilterPatterns (): List <String > {
35- return listOf (
36- " **/AutoValue_*.*" , // Filter to remove generated files from: https://github.com/google/auto
37- // "**/*JavascriptBridge.class",
38-
39- // Android Databinding
40- " **/*databinding" ,
41- " **/*binders" ,
42- " **/*layouts" ,
43- " **/BR.class" , // Filter to remove generated databinding files
44-
45- // Core Android generated class filters
46- " **/R.class" ,
47- " **/R$*.class" ,
48- " **/Manifest*.*" ,
49- " **/BuildConfig.class" ,
50- " android/**/*.*" ,
51-
52- " **/*\$ ViewBinder*.*" ,
53- " **/*\$ ViewInjector*.*" ,
54- " **/Lambda$*.class" ,
55- " **/Lambda.class" ,
56- " **/*Lambda.class" ,
57- " **/*Lambda*.class" ,
58- " **/*\$ InjectAdapter.class" ,
59- " **/*\$ ModuleAdapter.class" ,
60- " **/*\$ ViewInjector*.class" ) + rootProjectExtension.excludes
61- }
62-
63- private fun getBuildVariantFor (project : Project ): String {
64- return rootProjectExtension.buildVariantOverrides[project.path]
65- ? : rootProjectExtension.buildVariant
66- }
34+ private fun getFileFilterPatterns (): List <String > = listOf (
35+ " **/AutoValue_*.*" , // Filter to remove generated files from: https://github.com/google/auto
36+ // "**/*JavascriptBridge.class",
37+
38+ // Android Databinding
39+ " **/*databinding" ,
40+ " **/*binders" ,
41+ " **/*layouts" ,
42+ " **/BR.class" , // Filter to remove generated databinding files
43+
44+ // Core Android generated class filters
45+ " **/R.class" ,
46+ " **/R$*.class" ,
47+ " **/Manifest*.*" ,
48+ " **/BuildConfig.class" ,
49+ " android/**/*.*" ,
50+
51+ " **/*\$ ViewBinder*.*" ,
52+ " **/*\$ ViewInjector*.*" ,
53+ " **/Lambda$*.class" ,
54+ " **/Lambda.class" ,
55+ " **/*Lambda.class" ,
56+ " **/*Lambda*.class" ,
57+ " **/*\$ InjectAdapter.class" ,
58+ " **/*\$ ModuleAdapter.class" ,
59+ " **/*\$ ViewInjector*.class" ) + rootProjectExtension.excludes
60+
61+ private fun getBuildVariantFor (project : Project ): String =
62+ rootProjectExtension.buildVariantOverrides[project.path] ? : rootProjectExtension.buildVariant
6763
6864 private fun getExecutionDataFilePatterns (): List <String > {
6965 val list = mutableListOf<String >()
@@ -99,10 +95,13 @@ class RootCoveragePlugin : Plugin<Project> {
9995 task.group = " reporting"
10096 task.description = " Generates a Jacoco report with combined results from all the subprojects."
10197
102- task.reports.html.isEnabled = true
103- task.reports.xml.isEnabled = false
104- task.reports.csv.isEnabled = false
98+ task.reports.html.isEnabled = rootProjectExtension.generateHtml
99+ task.reports.xml.isEnabled = rootProjectExtension.generateXml
100+ task.reports.csv.isEnabled = rootProjectExtension.generateCsv
101+
105102 task.reports.html.destination = project.file(" ${project.buildDir} /reports/jacoco" )
103+ task.reports.xml.destination = project.file(" ${project.buildDir} /reports/jacoco.xml" )
104+ task.reports.csv.destination = project.file(" ${project.buildDir} /reports/jacoco.csv" )
106105
107106 // Add some run-time checks.
108107 task.doFirst {
@@ -200,8 +199,6 @@ class RootCoveragePlugin : Plugin<Project> {
200199 val javaClassTrees = javaClassOutputs.files.map { file ->
201200 project.fileTree(file, excludes = getFileFilterPatterns()).excludeNonClassFiles()
202201 }
203- // Hard coded alternative to get class files for Java.
204- // val classesTree = project.fileTree(mapOf("dir" to "${project.buildDir}/intermediates/classes/${variant.dirName}", "excludes" to getFileFilterPatterns()))
205202
206203 // TODO: No idea how to dynamically get the kotlin class files output folder, so for now this is hardcoded.
207204 // TODO: For some reason the tmp/kotlin-classes folder does not use the variant.dirName property, for now we instead use the variant.name.
@@ -226,21 +223,9 @@ class RootCoveragePlugin : Plugin<Project> {
226223 // Make the root task depend on the sub-project code coverage task
227224 rootTask.dependsOn(subModuleTask)
228225
229- // Set or add the sub-task class directories to the root task
230- if (rootTask.classDirectories == null ) {
231- rootTask.classDirectories.setFrom(subModuleTask.classDirectories)
232- } else {
233- rootTask.additionalClassDirs(subModuleTask.classDirectories)
234- }
235-
236- // Set or add the sub-task source directories to the root task
237- if (rootTask.sourceDirectories == null ) {
238- rootTask.sourceDirectories.setFrom(subModuleTask.sourceDirectories)
239- } else {
240- rootTask.additionalSourceDirs(subModuleTask.sourceDirectories)
241- }
242-
243- // Add the sub-task class directories to the root task
244- rootTask.executionData(subModuleTask.executionData)
226+ // Add the sub-task class directories, source directories and executionData to the root task
227+ rootTask.classDirectories.from(subModuleTask.classDirectories)
228+ rootTask.sourceDirectories.from(subModuleTask.sourceDirectories)
229+ rootTask.executionData.from(subModuleTask.executionData)
245230 }
246231}
0 commit comments