Add statistic to buildScan

This commit is contained in:
nataliya.valtman
2021-07-29 18:25:57 +03:00
parent 423ecfe640
commit 2114e048dc
4 changed files with 35 additions and 4 deletions
@@ -97,6 +97,8 @@ dependencies {
testCompileOnly(project(":kotlin-reflect-api"))
testCompileOnly(project(":kotlin-annotation-processing"))
testCompileOnly(project(":kotlin-annotation-processing-gradle"))
compileOnly("com.gradle:gradle-enterprise-gradle-plugin:3.6.3")
}
if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
@@ -10,10 +10,14 @@ import org.gradle.BuildResult
import org.gradle.api.Project
import org.gradle.api.invocation.Gradle
import org.gradle.api.logging.Logging
import com.gradle.scan.plugin.BuildScanExtension
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
import org.jetbrains.kotlin.gradle.plugin.stat.ReportStatistics
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildEsStatListener
import org.jetbrains.kotlin.gradle.plugin.statistics.ReportStatisticsToBuildScan
import org.jetbrains.kotlin.gradle.plugin.statistics.ReportStatisticsToElasticSearch
import org.jetbrains.kotlin.gradle.report.configureReporting
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
@@ -66,7 +70,16 @@ internal class KotlinGradleBuildServices private constructor(
KotlinGradleBuildListener(KotlinGradleFinishBuildHandler())
}
val kotlinGradleEsListenerProvider = project.provider {
KotlinBuildEsStatListener(project.rootProject.name)
// val listeners = project.objects.listProperty(ReportStatistics::class.java)
// .value(listOf<ReportStatistics>(ReportStatisticsToElasticSearch))
// project.rootProject.extensions.findByType(BuildScanExtension::class.java)?.also { listeners.add(ReportStatisticsToBuildScan(it)) }
// KotlinBuildEsStatListener(project.rootProject.name, listeners.get())
val listeners = ArrayList<ReportStatistics>()
val buildScan = project.rootProject.extensions.findByName("buildScan")
buildScan?.also { listeners.add(ReportStatisticsToBuildScan(it as BuildScanExtension)) }
listeners.add(ReportStatisticsToElasticSearch)
KotlinBuildEsStatListener(project.rootProject.name, listeners)
}
if (instance != null) {
@@ -27,8 +27,7 @@ enum class TaskExecutionState {
;
}
class KotlinBuildEsStatListener(val projectName: String) : OperationCompletionListener, AutoCloseable, TaskExecutionListener {
val reportStatistics: ReportStatistics = ReportStatisticsToElasticSearch
class KotlinBuildEsStatListener(val projectName: String, val reportStatistics : List<ReportStatistics>) : OperationCompletionListener, AutoCloseable, TaskExecutionListener {
val label by lazy { CompilerSystemProperties.KOTLIN_STAT_LABEl_PROPERTY.value }
@@ -69,7 +68,7 @@ class KotlinBuildEsStatListener(val projectName: String) : OperationCompletionLi
statData = statData, projectName = projectName, taskName = taskPath, changes = changes,
tags = taskExecutionResult?.taskInfo?.properties?.map { it.name } ?: emptyList()
)
reportStatistics.report(compileStatData)
reportStatistics.forEach { it.report(compileStatData) }
}
private fun availableForStat(taskPath: String): Boolean {
@@ -0,0 +1,17 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.plugin.statistics
import com.google.gson.Gson
import com.gradle.scan.plugin.BuildScanExtension
import org.jetbrains.kotlin.gradle.plugin.stat.CompileStatData
import org.jetbrains.kotlin.gradle.plugin.stat.ReportStatistics
class ReportStatisticsToBuildScan(val buildScan: BuildScanExtension) : ReportStatistics {
override fun report(data: CompileStatData) {
buildScan.value(data.taskName, Gson().toJson(data).toString())
}
}