From 4525eed73496507e50c644b1e53c59a68c7f1e15 Mon Sep 17 00:00:00 2001 From: Gary Tierney Date: Tue, 4 Sep 2018 01:16:12 +0100 Subject: [PATCH] Re-add HTML and XML code coverage reports --- build.gradle | 13 +++++++++++- gradle/code-quality.gradle | 42 +++++++++++++++----------------------- gradle/testing.gradle | 41 +++++++++++++++++++++++++++++++++---- 3 files changed, 66 insertions(+), 30 deletions(-) diff --git a/build.gradle b/build.gradle index 871c65d2..a5ebeebb 100644 --- a/build.gradle +++ b/build.gradle @@ -20,4 +20,15 @@ allprojects { apply from: 'gradle/properties.gradle' apply from: 'gradle/code-quality.gradle' apply from: 'gradle/testing.gradle' -apply from: 'gradle/wrapper.gradle' \ No newline at end of file +apply from: 'gradle/wrapper.gradle' + +gradle.projectsEvaluated { + task check { + def deps = [] + deps += getTasksByName("check", true).findAll { it.project != rootProject } + deps += detektCheck + deps += jacocoReport + + dependsOn(deps) + } +} \ No newline at end of file diff --git a/gradle/code-quality.gradle b/gradle/code-quality.gradle index b65f3cd3..c5f27a2e 100644 --- a/gradle/code-quality.gradle +++ b/gradle/code-quality.gradle @@ -1,32 +1,24 @@ def detektAggregateReport = "$rootDir/reports/detekt-report.xml" -gradle.projectsEvaluated { - detekt { - version = detektVersion +detekt { + version = detektVersion - defaultProfile { - output = file("$buildDir/reports") - outputName = "detekt-report" - config = file("$rootDir/gradle/config/detekt.yml") - parallel = true - } - - subprojects.findAll { it.pluginManager.hasPlugin('kotlin') }.forEach { proj -> - profile(proj.name) { - input = proj.sourceSets.main.kotlin - } - } + profile("main") { + input = rootProject.projectDir.absolutePath + filters = ".*/resources/.*, .*/build/.*" + output = file("$buildDir/reports") + outputName = "detekt-report" + config = file("$rootDir/gradle/config/detekt.yml") + parallel = true } +} - dependencies { - detekt group: 'io.gitlab.arturbosch.detekt', name: 'detekt-formatting', version: detektVersion +dependencies { + detekt group: 'io.gitlab.arturbosch.detekt', name: 'detekt-formatting', version: detektVersion +} + +sonarqube { + properties { + property "sonar.kotlin.detekt.reportPaths", detektAggregateReport } - - sonarqube { - properties { - property "sonar.kotlin.detekt.reportPaths", detektAggregateReport - } - } - - tasks["sonarqube"].dependsOn(detektCheck) } \ No newline at end of file diff --git a/gradle/testing.gradle b/gradle/testing.gradle index ec42fd68..838454d4 100644 --- a/gradle/testing.gradle +++ b/gradle/testing.gradle @@ -5,7 +5,6 @@ def jacocoCoverageAggregate = "$buildDir/jacoco/jacocoTestAll.exec" def testedProjects() { subprojects.findAll { subproject -> subproject.plugins.hasPlugin('java') || subproject.plugins.hasPlugin('kotlin') } } - gradle.projectsEvaluated { configure(testedProjects()) { apply plugin: "jacoco" @@ -31,6 +30,43 @@ gradle.projectsEvaluated { task jacocoMerge(type: JacocoMerge) { destinationFile = file(jacocoCoverageAggregate) executionData = project.fileTree(dir: '.', include: '**/build/jacoco/jacocoTest.exec') + + dependsOn(getTasksByName('test', true)) + } + + + task jacocoReport(type: JacocoReport) { + sourceDirectories = files() + classDirectories = files() + executionData = files() + + reports { + html.enabled = true + xml.enabled = true + csv.enabled = false + } + + // Work-around to allow us to build list of executionData files in doFirst + onlyIf = { + true + } + + /* + * Builds list of source dirs, class dirs, and executionData files + * when task is run, not at script evaluation time + */ + doFirst { + subprojects.findAll { subproject -> + subproject.pluginManager.hasPlugin('java') || subproject.pluginManager.hasPlugin('kotlin') + }.each { subproject -> + additionalSourceDirs files((Set) subproject.sourceSets.main.allSource.srcDirs) + additionalClassDirs((FileCollection) subproject.sourceSets.main.output) + } + + executionData = files(jacocoCoverageAggregate) + } + + dependsOn(jacocoMerge) } sonarqube { @@ -42,7 +78,4 @@ gradle.projectsEvaluated { property "sonar.jacoco.reportPaths", jacocoCoverageAggregate } } - - tasks["sonarqube"].dependsOn(jacocoMerge) } -