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.gradle.api.logging.Logger
|
||||||
import org.jetbrains.kotlin.build.report.metrics.*
|
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.ExitCode
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
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.config.Services
|
||||||
import org.jetbrains.kotlin.daemon.common.*
|
import org.jetbrains.kotlin.daemon.common.*
|
||||||
import org.jetbrains.kotlin.gradle.logging.*
|
import org.jetbrains.kotlin.gradle.logging.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
|
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
|
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
|
||||||
import org.jetbrains.kotlin.gradle.report.BuildReportMode
|
import org.jetbrains.kotlin.gradle.report.*
|
||||||
import org.jetbrains.kotlin.gradle.report.ReportingSettings
|
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.report.TaskExecutionResult
|
||||||
import org.jetbrains.kotlin.gradle.tasks.clearLocalState
|
import org.jetbrains.kotlin.gradle.tasks.clearLocalState
|
||||||
import org.jetbrains.kotlin.gradle.tasks.throwGradleExceptionIfError
|
import org.jetbrains.kotlin.gradle.tasks.throwGradleExceptionIfError
|
||||||
@@ -30,6 +33,7 @@ import java.util.*
|
|||||||
import java.util.concurrent.Callable
|
import java.util.concurrent.Callable
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
internal class ProjectFilesForCompilation(
|
internal class ProjectFilesForCompilation(
|
||||||
val projectRootFile: File,
|
val projectRootFile: File,
|
||||||
@@ -134,7 +138,16 @@ internal class GradleKotlinCompilerWork @Inject constructor(
|
|||||||
|
|
||||||
throwGradleExceptionIfError(exitCode)
|
throwGradleExceptionIfError(exitCode)
|
||||||
} finally {
|
} 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
|
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.internal.state.TaskExecutionResults
|
||||||
import org.jetbrains.kotlin.gradle.plugin.stat.CompileStatData
|
import org.jetbrains.kotlin.gradle.plugin.stat.CompileStatData
|
||||||
import org.jetbrains.kotlin.gradle.plugin.stat.ReportStatistics
|
import org.jetbrains.kotlin.gradle.plugin.stat.ReportStatistics
|
||||||
|
import org.jetbrains.kotlin.incremental.ChangedFiles
|
||||||
|
|
||||||
enum class TaskExecutionState {
|
enum class TaskExecutionState {
|
||||||
SKIPPED,
|
SKIPPED,
|
||||||
@@ -51,15 +52,30 @@ class KotlinBuildEsStatListener(val projectName: String) : OperationCompletionLi
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun reportData(taskPath: String, duration: Long, taskResult: TaskExecutionState) {
|
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(
|
val compileStatData = CompileStatData(
|
||||||
duration = duration, taskResult = taskResult.name, label = label,
|
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)
|
reportStatistics.report(compileStatData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun availableForStat(taskPath: String): Boolean {
|
||||||
|
return taskPath.contains("compileKotlin")
|
||||||
|
}
|
||||||
|
|
||||||
override fun afterExecute(task: Task, taskState: TaskState) {
|
override fun afterExecute(task: Task, taskState: TaskState) {
|
||||||
val taskResult = when {
|
val taskResult = when {
|
||||||
taskState.skipped -> TaskExecutionState.SKIPPED
|
taskState.skipped -> TaskExecutionState.SKIPPED
|
||||||
|
|||||||
+2
@@ -12,6 +12,8 @@ data class CompileStatData(
|
|||||||
val taskName: String?,
|
val taskName: String?,
|
||||||
val taskResult: String,
|
val taskResult: String,
|
||||||
val duration: Long,
|
val duration: Long,
|
||||||
|
val tags: List<String>,
|
||||||
|
val changes: List<String>,
|
||||||
val statData: Map<String, Long>
|
val statData: Map<String, Long>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+13
-1
@@ -6,8 +6,20 @@
|
|||||||
package org.jetbrains.kotlin.gradle.report
|
package org.jetbrains.kotlin.gradle.report
|
||||||
|
|
||||||
import org.jetbrains.kotlin.build.report.metrics.BuildMetrics
|
import org.jetbrains.kotlin.build.report.metrics.BuildMetrics
|
||||||
|
import org.jetbrains.kotlin.incremental.ChangedFiles
|
||||||
|
|
||||||
internal class TaskExecutionResult(
|
internal class TaskExecutionResult(
|
||||||
val buildMetrics: BuildMetrics,
|
val buildMetrics: BuildMetrics,
|
||||||
|
val taskInfo: TaskExecutionInfo = TaskExecutionInfo(),
|
||||||
val icLogLines: List<String> = emptyList()
|
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