Skip to content

Commit

Permalink
Reuse setReportOutputConventions (#4546)
Browse files Browse the repository at this point in the history
* Reuse `outputLocation.convention`

* Single line

* Rename
  • Loading branch information
Goooler committed Feb 4, 2022
1 parent 35e5dc7 commit f626273
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 88 deletions.
Expand Up @@ -16,7 +16,6 @@ import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.TaskProvider
import java.io.File

internal class DetektAndroid(private val project: Project) {

Expand Down Expand Up @@ -121,34 +120,7 @@ internal fun Project.registerAndroidDetektTask(
extension.baseline?.existingVariantOrBaseFile(variant.name)?.let { baselineFile ->
baseline.set(layout.file(project.provider { baselineFile }))
}
reports.xml.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, variant.name + ".xml").absolutePath
}
)
)
reports.html.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, variant.name + ".html").absolutePath
}
)
)
reports.txt.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, variant.name + ".txt").absolutePath
}
)
)
reports.sarif.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, variant.name + ".sarif").absolutePath
}
)
)
setReportOutputConventions(reports, extension, variant.name)
description = "EXPERIMENTAL: Run detekt analysis for ${variant.name} classes with type resolution"
}

Expand Down
Expand Up @@ -9,7 +9,6 @@ import org.gradle.api.internal.HasConvention
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.SourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import java.io.File

internal class DetektJvm(private val project: Project) {
fun registerTasks(extension: DetektExtension) {
Expand All @@ -30,36 +29,7 @@ internal class DetektJvm(private val project: Project) {
extension.baseline?.existingVariantOrBaseFile(sourceSet.name)?.let { baselineFile ->
baseline.set(layout.file(project.provider { baselineFile }))
}

reports.xml.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, sourceSet.name + ".xml").absolutePath
}
)
)
reports.html.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, sourceSet.name + ".html").absolutePath
}
)
)
reports.txt.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, sourceSet.name + ".txt").absolutePath
}
)
)
reports.sarif.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, sourceSet.name + ".sarif").absolutePath
}
)
)

setReportOutputConventions(reports, extension, sourceSet.name)
description = "EXPERIMENTAL: Run detekt analysis for ${sourceSet.name} classes with type resolution"
}
}
Expand Down
Expand Up @@ -3,6 +3,8 @@ package io.gitlab.arturbosch.detekt.internal
import com.android.build.gradle.BaseExtension
import io.gitlab.arturbosch.detekt.DetektPlugin
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import io.gitlab.arturbosch.detekt.extensions.DetektReport
import io.gitlab.arturbosch.detekt.extensions.DetektReports
import org.gradle.api.Project
import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
Expand Down Expand Up @@ -108,34 +110,7 @@ internal class DetektMultiplatform(private val project: Project) {
}?.let { baselineFile ->
baseline.set(layout.file(provider { baselineFile }))
}
reports.xml.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, compilation.name + ".xml").absolutePath
}
)
)
reports.html.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, compilation.name + ".html").absolutePath
}
)
)
reports.txt.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, compilation.name + ".txt").absolutePath
}
)
)
reports.sarif.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, compilation.name + ".sarif").absolutePath
}
)
)
setReportOutputConventions(reports, extension, compilation.name)
description =
"Run detekt analysis for target ${target.name} and source set ${compilation.name}"
if (runWithTypeResolution) {
Expand Down Expand Up @@ -168,6 +143,28 @@ internal class DetektMultiplatform(private val project: Project) {
}
}

internal fun Project.setReportOutputConventions(reports: DetektReports, extension: DetektExtension, name: String) {
setReportOutputConvention(extension, reports.xml, name, "xml")
setReportOutputConvention(extension, reports.html, name, "html")
setReportOutputConvention(extension, reports.txt, name, "txt")
setReportOutputConvention(extension, reports.sarif, name, "sarif")
}

private fun Project.setReportOutputConvention(
extension: DetektExtension,
report: DetektReport,
name: String,
format: String
) {
report.outputLocation.convention(
layout.projectDirectory.file(
providers.provider {
File(extension.reportsDir, "$name.$format").absolutePath
}
)
)
}

// We currently run type resolution only for Jvm & Android targets as
// native/js targets needs a different compiler classpath.
private val KotlinTarget.runWithTypeResolution: Boolean
Expand Down

0 comments on commit f626273

Please sign in to comment.