Skip to content

Commit

Permalink
Remove long deprecated detekt task properties - #2811 (#2944)
Browse files Browse the repository at this point in the history
  • Loading branch information
arturbosch committed Aug 24, 2020
1 parent a52518f commit 0fc25c4
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 39 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.gitlab.arturbosch.detekt

import io.gitlab.arturbosch.detekt.extensions.CustomDetektReport
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import io.gitlab.arturbosch.detekt.extensions.DetektReport
import io.gitlab.arturbosch.detekt.extensions.DetektReportType
Expand Down Expand Up @@ -29,7 +28,6 @@ import org.gradle.api.file.RegularFileProperty
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.provider.ProviderFactory
import org.gradle.api.reporting.ReportingExtension
import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.Classpath
Expand All @@ -38,9 +36,9 @@ import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.Nested
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.OutputFiles
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.SkipWhenEmpty
Expand All @@ -53,7 +51,6 @@ import javax.inject.Inject

@CacheableTask
open class Detekt @Inject constructor(
private val providers: ProviderFactory,
private val objects: ObjectFactory
) : SourceTask(), VerificationTask {

Expand Down Expand Up @@ -156,42 +153,30 @@ open class Detekt @Inject constructor(
@get:Internal
val reportsDir: Property<File> = project.objects.property(File::class.java)

@Deprecated(
"Will be made internal in the future.",
replaceWith = ReplaceWith("reports.xml.destination")
)
val xmlReportFile: Provider<RegularFile>
internal val xmlReportFile: Provider<RegularFile>
@OutputFile
@Optional
get() = getTargetFileProvider(reports.xml)

@Deprecated(
"Will be made internal in the future.",
replaceWith = ReplaceWith("reports.html.destination")
)
val htmlReportFile: Provider<RegularFile>
internal val htmlReportFile: Provider<RegularFile>
@OutputFile
@Optional
get() = getTargetFileProvider(reports.html)

@Deprecated(
"Will be made internal in the future.",
replaceWith = ReplaceWith("reports.txt.destination")
)
val txtReportFile: Provider<RegularFile>
internal val txtReportFile: Provider<RegularFile>
@OutputFile
@Optional
get() = getTargetFileProvider(reports.txt)

internal val customReportFiles: ConfigurableFileCollection
@OutputFiles
@Optional
get() = objects.fileCollection().from(reports.custom.mapNotNull { it.destination })

private val defaultReportsDir: Directory = project.layout.buildDirectory.get()
.dir(ReportingExtension.DEFAULT_REPORTS_DIR_NAME)
.dir("detekt")

@Deprecated("Use reports {} to configure custom reports")
val customReports: Provider<Collection<CustomDetektReport>>
@Nested
get() = providers.provider { reports.custom }

init {
group = LifecycleBasePlugin.VERIFICATION_GROUP
}
Expand All @@ -218,18 +203,7 @@ open class Detekt @Inject constructor(
AutoCorrectArgument(autoCorrectProp.getOrElse(false)),
DisableDefaultRuleSetArgument(disableDefaultRuleSetsProp.getOrElse(false))
)
arguments.addAll(customReports.get().map {
val reportId = it.reportId
val destination = it.destination

checkNotNull(reportId) { "If a custom report is specified, the reportId must be present" }
check(!DetektReportType.isWellKnownReportId(reportId)) {
"The custom report reportId may not be same as one of the default reports"
}
checkNotNull(destination) { "If a custom report is specified, the destination must be present" }

CustomReportArgument(reportId, objects.fileProperty().getOrElse { destination })
})
arguments.addAll(convertCustomReportsToArguments())

invoker.invokeCli(
arguments = arguments.toList(),
Expand All @@ -239,6 +213,20 @@ open class Detekt @Inject constructor(
)
}

private fun convertCustomReportsToArguments(): List<CustomReportArgument> = reports.custom.map {
val reportId = it.reportId
val destination = it.destination

checkNotNull(reportId) { "If a custom report is specified, the reportId must be present" }
check(!DetektReportType.isWellKnownReportId(reportId)) {
"The custom report reportId may not be same as one of the default reports"
}
checkNotNull(destination) { "If a custom report is specified, the destination must be present" }
check(!destination.isDirectory) { "If a custom report is specified, the destination must be not a directory" }

CustomReportArgument(reportId, objects.fileProperty().getOrElse { destination })
}

private fun getTargetFileProvider(report: DetektReport): RegularFileProperty {
val isEnabled = report.enabled ?: DetektExtension.DEFAULT_REPORT_ENABLED_VALUE
val provider = objects.fileProperty()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.gitlab.arturbosch.detekt

import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import io.gitlab.arturbosch.detekt.extensions.DetektReport
import org.gradle.api.GradleException
import org.gradle.api.Plugin
import org.gradle.api.Project
Expand Down Expand Up @@ -71,6 +72,12 @@ class DetektPlugin : Plugin<Project> {
}
}

private fun DetektReport.setDefaultIfUnset(default: File) {
if (destination == null) {
destination = default
}
}

private fun registerDetektTask(project: Project, extension: DetektExtension, sourceSet: SourceSet) {
val kotlinSourceSet = (sourceSet as HasConvention).convention.plugins["kotlin"] as? KotlinSourceSet
?: throw GradleException("Kotlin source set not found. Please report on detekt's issue tracker")
Expand All @@ -85,9 +92,10 @@ class DetektPlugin : Plugin<Project> {
it.baseline.set(project.layout.file(project.provider { extension.baseline }))
it.setSource(kotlinSourceSet.kotlin.files)
it.classpath.setFrom(sourceSet.compileClasspath, sourceSet.output.classesDirs)
it.reports.xml.destination = File(extension.reportsDir, sourceSet.name + ".xml")
it.reports.html.destination = File(extension.reportsDir, sourceSet.name + ".html")
it.reports.txt.destination = File(extension.reportsDir, sourceSet.name + ".txt")
it.reports = extension.reports
it.reports.xml.setDefaultIfUnset(File(extension.reportsDir, sourceSet.name + ".xml"))
it.reports.html.setDefaultIfUnset(File(extension.reportsDir, sourceSet.name + ".html"))
it.reports.txt.setDefaultIfUnset(File(extension.reportsDir, sourceSet.name + ".txt"))
it.ignoreFailuresProp.set(project.provider { extension.ignoreFailures })
it.description =
"EXPERIMENTAL & SLOW: Run detekt analysis for ${sourceSet.name} classes with type resolution"
Expand Down

0 comments on commit 0fc25c4

Please sign in to comment.