diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt index 14ef5f04ba6..9372492239a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt @@ -64,7 +64,8 @@ internal abstract class BuildFlowService : BuildService diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt index 8279edef3c2..a2daa4a9e66 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt @@ -9,6 +9,7 @@ import org.gradle.api.Project import org.gradle.api.artifacts.DependencySet import org.gradle.api.logging.Logging import org.jetbrains.kotlin.gradle.plugin.statistics.plugins.ObservablePlugins +import org.jetbrains.kotlin.gradle.report.BuildReportType import org.jetbrains.kotlin.gradle.utils.* import org.jetbrains.kotlin.statistics.BuildSessionLogger import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics @@ -84,11 +85,21 @@ class KotlinBuildStatHandler { project: Project, sessionLogger: BuildSessionLogger, isProjectIsolationEnabled: Boolean, + buildReportOutputs: List, ): MetricContainer { val gradle = project.gradle val configurationTimeMetrics = MetricContainer() configurationTimeMetrics.put(StringMetrics.PROJECT_PATH, gradle.rootProject.projectDir.absolutePath) configurationTimeMetrics.put(StringMetrics.GRADLE_VERSION, gradle.gradleVersion) + buildReportOutputs.forEach { + when (it) { + BuildReportType.BUILD_SCAN -> configurationTimeMetrics.put(BooleanMetrics.BUILD_SCAN_BUILD_REPORT, true) + BuildReportType.FILE -> configurationTimeMetrics.put(BooleanMetrics.FILE_BUILD_REPORT, true) + BuildReportType.HTTP -> configurationTimeMetrics.put(BooleanMetrics.HTTP_BUILD_REPORT, true) + BuildReportType.SINGLE_FILE -> configurationTimeMetrics.put(BooleanMetrics.SINGLE_FILE_BUILD_REPORT, true) + BuildReportType.TRY_K2_CONSOLE -> {}//ignore + } + } if (isProjectIsolationEnabled) { //support project isolation - KT-58768 return configurationTimeMetrics diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt index a0c93270aa1..1d5fa567436 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.gradle.plugin.internal.ConfigurationTimePropertiesAc import org.jetbrains.kotlin.gradle.plugin.internal.configurationTimePropertiesAccessor import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatHandler.Companion.runSafe +import org.jetbrains.kotlin.gradle.report.BuildReportType import org.jetbrains.kotlin.statistics.BuildSessionLogger import org.jetbrains.kotlin.statistics.BuildSessionLogger.Companion.STATISTICS_FOLDER_NAME import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics @@ -195,7 +196,7 @@ internal abstract class KotlinBuildStatsService internal constructor() : IStatis /** * Collect project general and configuration metrics at the start of a build */ - open fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean): MetricContainer = MetricContainer() + open fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean, buildReportOutputs: List): MetricContainer = MetricContainer() open fun recordProjectsEvaluated(gradle: Gradle) {} } @@ -312,7 +313,7 @@ internal class DefaultKotlinBuildStatsService internal constructor( KotlinBuildStatHandler().reportBuildFinished(sessionLogger, action, buildFailed, configurationTimeMetrics) } - override fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean) = - KotlinBuildStatHandler().collectConfigurationTimeMetrics(project, sessionLogger, isProjectIsolationEnabled) + override fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean, buildReportOutputs: List) = + KotlinBuildStatHandler().collectConfigurationTimeMetrics(project, sessionLogger, isProjectIsolationEnabled, buildReportOutputs) } diff --git a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt index ce361fdeef1..ad31b860aa1 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt @@ -48,6 +48,12 @@ enum class BooleanMetrics(val type: BooleanOverridePolicy, val anonymization: Bo JS_KLIB_INCREMENTAL(OR, SAFE), JS_IR_INCREMENTAL(OR, SAFE), + //Build reports + FILE_BUILD_REPORT(OR, SAFE), + BUILD_SCAN_BUILD_REPORT(OR, SAFE), + HTTP_BUILD_REPORT(OR, SAFE), + SINGLE_FILE_BUILD_REPORT(OR, SAFE), + //Dokka features ENABLED_DOKKA(OR, SAFE), ENABLED_DOKKA_HTML(OR, SAFE),