Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save volodia-chornenkyy/f1e1c9e00ccd36aa6e23e040869b5b10 to your computer and use it in GitHub Desktop.
Save volodia-chornenkyy/f1e1c9e00ccd36aa6e23e040869b5b10 to your computer and use it in GitHub Desktop.
Gradle task which gathers all Detekt reports from the subprojects and put it in the one folder "$rootDir/reports/detekt". It simplifies CI process a bit.
task detektGrabSubprojectsReports {
group = "Verification"
def detektSingleReportFolder = "$rootDir/reports/detekt"
def detektGeneralFolder = new File(detektSingleReportFolder)
detektGeneralFolder.mkdirs();
subprojects.findAll { subproject ->
def projectReportDir = "$subproject.buildDir/reports"
def detektReportFiles = [
"detekt.xml",
"detekt.html"
]
def detektReport = new File("$projectReportDir/${detektReportFiles[0]}")
if (detektReport.exists()) {
println "Detekt report for $subproject is available."
def subprojectReportDir = new File("$detektSingleReportFolder/${subproject.name}")
subprojectReportDir.mkdirs()
detektReportFiles.each { name ->
println name
def src = new File("$projectReportDir/$name")
def target = new File("$subprojectReportDir/$name")
target.createNewFile()
target.write(src.text)
}
}
}
}
@set321go
Copy link

kotlin version. I had to change (val projectReportDir = "${subproject.buildDir}/reports/detekt") for my project as the reports are in a detekt dir.

tasks {
    register("detektGrabSubprojectsReports") {
        group = "Verification"

        val detektSingleReportFolder = "${buildDir}/reports/detekt"
        val detektGeneralFolder = File(detektSingleReportFolder)
        detektGeneralFolder.mkdirs();
        subprojects.forEach { subproject ->
            val projectReportDir = "${subproject.buildDir}/reports/detekt"
            val detektReportFiles = listOf(
                    "detekt.xml",
                    "detekt.html"
            )
            val detektReport = File("${projectReportDir}/${detektReportFiles[0]}")
            if (detektReport.exists()) {
                println("Detekt report for $subproject is available.")
                val subprojectReportDir = File("${detektSingleReportFolder}/${subproject.name}")
                subprojectReportDir.mkdirs()
                detektReportFiles.forEach { name ->
                    println(name)
                    val src = File("${projectReportDir}/${name}")
                    val target = File("${subprojectReportDir}/${name}")
                    target.createNewFile()
                    target.writeText(src.readText())
                }
            }
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment