[Gradle] Don't trigger all root project properties evaluation on FUS report

`Project.properties` triggers all the properties computation to return them as `Map`. We should query only for a required property instead.
#KT-56421 Fixed
This commit is contained in:
Alexander.Likhachev
2023-02-10 20:39:31 +01:00
committed by Space Team
parent 5d391bc261
commit 0ab8d07e23
3 changed files with 15 additions and 4 deletions
@@ -9,11 +9,14 @@ import org.jetbrains.kotlin.gradle.idea.kpm.IdeaKpmDependency
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
private const val IDEA_KOTLIN_LOG_DEPENDENCIES = "idea.kotlin.log.dependencies"
internal object IdeaKpmDependencyLogger : IdeaKpmDependencyEffect {
override fun invoke(
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
) {
val fragmentPathRegex = fragment.project.properties["idea.kotlin.log.dependencies"]?.toString() ?: return
if (!fragment.project.hasProperty(IDEA_KOTLIN_LOG_DEPENDENCIES)) return
val fragmentPathRegex = fragment.project.property(IDEA_KOTLIN_LOG_DEPENDENCIES).toString()
if (!fragment.path.matches(Regex(fragmentPathRegex))) return
val message = buildString {
@@ -80,7 +80,7 @@ class KotlinBuildStatHandler {
sessionLogger.report(NumericalMetrics.GRADLE_DAEMON_HEAP_SIZE, Runtime.getRuntime().maxMemory())
sessionLogger.report(
BooleanMetrics.KOTLIN_OFFICIAL_CODESTYLE,
gradle.rootProject.properties["kotlin.code.style"] == "official"
gradle.rootProject.providers.gradleProperty("kotlin.code.style").orNull == "official"
) // constants are saved in IDEA plugin and could not be accessed directly
gradle.taskGraph.whenReady() { taskExecutionGraph ->
@@ -152,7 +152,11 @@ internal abstract class KotlinBuildStatsService internal constructor() : BuildAd
return if (File(gradle.gradleUserHomeDir, DISABLE_STATISTICS_FILE_NAME).exists()) {
false
} else {
gradle.rootProject.properties[ENABLE_STATISTICS_PROPERTY_NAME]?.toString()?.toBoolean() ?: DEFAULT_STATISTICS_STATE
if (gradle.rootProject.hasProperty(ENABLE_STATISTICS_PROPERTY_NAME)) {
gradle.rootProject.property(ENABLE_STATISTICS_PROPERTY_NAME).toString().toBoolean()
} else {
DEFAULT_STATISTICS_STATE
}
}
}
}
@@ -194,7 +198,11 @@ internal class DefaultKotlinBuildStatsService internal constructor(
gradle: Gradle,
val beanName: ObjectName
) : KotlinBuildStatsService(), KotlinBuildStatsMXBean {
private val forcePropertiesValidation = gradle.rootProject.properties[FORCE_VALUES_VALIDATION]?.toString()?.toBoolean() ?: false
private val forcePropertiesValidation = if (gradle.rootProject.hasProperty(FORCE_VALUES_VALIDATION)) {
gradle.rootProject.property(FORCE_VALUES_VALIDATION).toString().toBoolean()
} else {
false
}
private val sessionLogger = BuildSessionLogger(gradle.gradleUserHomeDir, forceValuesValidation = forcePropertiesValidation)
private fun gradleBuildStartTime(gradle: Gradle): Long? {