From 2f0cc96924d1eca460440878d4f48dc2129dd7fd Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Sat, 23 Apr 2022 12:43:32 +0100 Subject: [PATCH] Break a dependency between detekt-gradle-plugin and detekt-utils --- detekt-gradle-plugin/build.gradle.kts | 1 - .../arturbosch/detekt/extensions/DetektExtension.kt | 13 +++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/detekt-gradle-plugin/build.gradle.kts b/detekt-gradle-plugin/build.gradle.kts index 8fe7fe49142..c1818c6d9b0 100644 --- a/detekt-gradle-plugin/build.gradle.kts +++ b/detekt-gradle-plugin/build.gradle.kts @@ -66,7 +66,6 @@ configurations.compileOnly { extendsFrom(pluginCompileOnly) } dependencies { compileOnly(libs.kotlin.gradlePluginApi) implementation(libs.sarif4k) - implementation(projects.detektUtils) // Migrate to `implementation(testFixtures(project))` in test suite configuration when Gradle 7.5 released // (https://github.com/gradle/gradle/pull/19472) diff --git a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/extensions/DetektExtension.kt b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/extensions/DetektExtension.kt index 5a599ee7fc9..7b8937f0ef8 100644 --- a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/extensions/DetektExtension.kt +++ b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/extensions/DetektExtension.kt @@ -1,6 +1,5 @@ package io.gitlab.arturbosch.detekt.extensions -import io.github.detekt.utils.openSafeStream import org.gradle.api.Action import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.model.ObjectFactory @@ -109,6 +108,16 @@ open class DetektExtension @Inject constructor(objects: ObjectFactory) : CodeQua } internal fun loadDetektVersion(classLoader: ClassLoader): String = Properties().run { - load(classLoader.getResource("versions.properties")!!.openSafeStream()) + val inputStream = classLoader.getResource("versions.properties")!!.openConnection() + /* + * Due to https://bugs.openjdk.java.net/browse/JDK-6947916 and https://bugs.openjdk.java.net/browse/JDK-8155607, + * it is necessary to disallow caches to maintain stability on JDK 8 and 11 (and possibly more). + * Otherwise, simultaneous invocations of Detekt in the same VM can fail spuriously. A similar bug is referenced in + * https://github.com/detekt/detekt/issues/3396. The performance regression is likely unnoticeable. + * Due to https://github.com/detekt/detekt/issues/4332 it is included for all JDKs. + */ + .apply { useCaches = false } + .getInputStream() + load(inputStream) getProperty("detektVersion") }