Log changed files into ES statistic
This commit is contained in:
+16
-3
@@ -7,15 +7,18 @@ package org.jetbrains.kotlin.compilerRunner
|
||||
|
||||
import org.gradle.api.logging.Logger
|
||||
import org.jetbrains.kotlin.build.report.metrics.*
|
||||
import org.jetbrains.kotlin.cli.common.CompilerSystemProperties.COMPILE_INCREMENTAL_WITH_CLASSPATH_SHAPSHOTS
|
||||
import org.jetbrains.kotlin.cli.common.ExitCode
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.toBooleanLenient
|
||||
import org.jetbrains.kotlin.config.Services
|
||||
import org.jetbrains.kotlin.daemon.common.*
|
||||
import org.jetbrains.kotlin.gradle.logging.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
|
||||
import org.jetbrains.kotlin.gradle.report.BuildReportMode
|
||||
import org.jetbrains.kotlin.gradle.report.ReportingSettings
|
||||
import org.jetbrains.kotlin.gradle.report.*
|
||||
import org.jetbrains.kotlin.gradle.report.TaskExecutionInfo
|
||||
import org.jetbrains.kotlin.gradle.report.TaskExecutionProperties.ABI_SNAPSHOT
|
||||
import org.jetbrains.kotlin.gradle.report.TaskExecutionResult
|
||||
import org.jetbrains.kotlin.gradle.tasks.clearLocalState
|
||||
import org.jetbrains.kotlin.gradle.tasks.throwGradleExceptionIfError
|
||||
@@ -30,6 +33,7 @@ import java.util.*
|
||||
import java.util.concurrent.Callable
|
||||
import java.util.concurrent.Executors
|
||||
import javax.inject.Inject
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
internal class ProjectFilesForCompilation(
|
||||
val projectRootFile: File,
|
||||
@@ -134,7 +138,16 @@ internal class GradleKotlinCompilerWork @Inject constructor(
|
||||
|
||||
throwGradleExceptionIfError(exitCode)
|
||||
} finally {
|
||||
val result = TaskExecutionResult(buildMetrics = metrics.getMetrics(), icLogLines = icLogLines)
|
||||
val properties = ArrayList<TaskExecutionProperties>()
|
||||
COMPILE_INCREMENTAL_WITH_CLASSPATH_SHAPSHOTS.value.toBooleanLenient()?.let {
|
||||
if (it) properties.add(ABI_SNAPSHOT)
|
||||
}
|
||||
|
||||
val taskInfo = TaskExecutionInfo(
|
||||
changedFiles = incrementalCompilationEnvironment?.changedFiles,
|
||||
properties = properties
|
||||
)
|
||||
val result = TaskExecutionResult(buildMetrics = metrics.getMetrics(), icLogLines = icLogLines, taskInfo = taskInfo)
|
||||
TaskExecutionResults[taskPath] = result
|
||||
}
|
||||
}
|
||||
|
||||
+18
-2
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.cli.common.CompilerSystemProperties
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
|
||||
import org.jetbrains.kotlin.gradle.plugin.stat.CompileStatData
|
||||
import org.jetbrains.kotlin.gradle.plugin.stat.ReportStatistics
|
||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
||||
|
||||
enum class TaskExecutionState {
|
||||
SKIPPED,
|
||||
@@ -51,15 +52,30 @@ class KotlinBuildEsStatListener(val projectName: String) : OperationCompletionLi
|
||||
}
|
||||
|
||||
private fun reportData(taskPath: String, duration: Long, taskResult: TaskExecutionState) {
|
||||
val statData = TaskExecutionResults[taskPath]?.buildMetrics?.buildTimes?.asMap()?.mapKeys { (key, _) -> key.name } ?: emptyMap()
|
||||
if (!availableForStat(taskPath)) {
|
||||
return;
|
||||
}
|
||||
val taskExecutionResult = TaskExecutionResults[taskPath]
|
||||
val statData = taskExecutionResult?.buildMetrics?.buildTimes?.asMap()?.mapKeys { (key, _) -> key.name } ?: emptyMap()
|
||||
val changedFiles = taskExecutionResult?.taskInfo?.changedFiles
|
||||
val changes = when (changedFiles) {
|
||||
is ChangedFiles.Known -> changedFiles.modified.map { it.absolutePath } + changedFiles.removed.map { it.absolutePath }
|
||||
is ChangedFiles.Dependencies -> changedFiles.modified.map { it.absolutePath } + changedFiles.removed.map { it.absolutePath }
|
||||
else -> emptyList<String>()
|
||||
|
||||
}
|
||||
val compileStatData = CompileStatData(
|
||||
duration = duration, taskResult = taskResult.name, label = label,
|
||||
statData = statData, projectName = projectName, taskName = taskPath
|
||||
statData = statData, projectName = projectName, taskName = taskPath, changes = changes,
|
||||
tags = taskExecutionResult?.taskInfo?.properties?.map { it.name } ?: emptyList()
|
||||
)
|
||||
reportStatistics.report(compileStatData)
|
||||
}
|
||||
|
||||
private fun availableForStat(taskPath: String): Boolean {
|
||||
return taskPath.contains("compileKotlin")
|
||||
}
|
||||
|
||||
override fun afterExecute(task: Task, taskState: TaskState) {
|
||||
val taskResult = when {
|
||||
taskState.skipped -> TaskExecutionState.SKIPPED
|
||||
|
||||
+2
@@ -12,6 +12,8 @@ data class CompileStatData(
|
||||
val taskName: String?,
|
||||
val taskResult: String,
|
||||
val duration: Long,
|
||||
val tags: List<String>,
|
||||
val changes: List<String>,
|
||||
val statData: Map<String, Long>
|
||||
)
|
||||
|
||||
|
||||
+13
-1
@@ -6,8 +6,20 @@
|
||||
package org.jetbrains.kotlin.gradle.report
|
||||
|
||||
import org.jetbrains.kotlin.build.report.metrics.BuildMetrics
|
||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
||||
|
||||
internal class TaskExecutionResult(
|
||||
val buildMetrics: BuildMetrics,
|
||||
val taskInfo: TaskExecutionInfo = TaskExecutionInfo(),
|
||||
val icLogLines: List<String> = emptyList()
|
||||
)
|
||||
)
|
||||
|
||||
internal class TaskExecutionInfo(
|
||||
val properties: List<TaskExecutionProperties> = emptyList(),
|
||||
val changedFiles: ChangedFiles? = null
|
||||
)
|
||||
|
||||
internal enum class TaskExecutionProperties {
|
||||
ABI_SNAPSHOT
|
||||
;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user