Add JSON output type for build reports

#KT-65792 Fixed
This commit is contained in:
Nataliya.Valtman
2024-01-24 11:47:36 +01:00
committed by Space Team
parent f493df42a9
commit 5885514c3d
21 changed files with 515 additions and 330 deletions
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.jps.statistic
import org.jetbrains.kotlin.build.report.metrics.JpsBuildPerformanceMetric
import org.jetbrains.kotlin.build.report.metrics.JpsBuildTime
import org.jetbrains.kotlin.build.report.statistics.CompileStatisticsData
import org.jetbrains.kotlin.build.report.statistics.file.FileReportService
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
import org.jetbrains.kotlin.build.report.statistics.file.Printer
import org.jetbrains.kotlin.build.report.statistics.file.ReadableFileReportService
import java.io.File
import kotlin.math.min
@@ -17,14 +17,13 @@ internal class JpsFileReportService(
buildReportDir: File,
projectName: String,
printMetrics: Boolean,
logger: JpsKotlinLogger,
private val changedFileListPerLimit: Int?
) : FileReportService<JpsBuildTime, JpsBuildPerformanceMetric>(buildReportDir, projectName, printMetrics, logger) {
override fun printCustomTaskMetrics(statisticsData: CompileStatisticsData<JpsBuildTime, JpsBuildPerformanceMetric>) {
) : ReadableFileReportService<JpsBuildTime, JpsBuildPerformanceMetric>(buildReportDir, projectName, printMetrics) {
override fun printCustomTaskMetrics(statisticsData: CompileStatisticsData<JpsBuildTime, JpsBuildPerformanceMetric>, printer: Printer) {
val changedFiles = statisticsData.getChanges().let { changes ->
changedFileListPerLimit?.let { changes.subList(0, min(it, changes.size)) } ?: changes
}
p.println("Changed files: ${changedFiles.sorted()}")
p.println("Execution result: ${statisticsData.getTaskResult()}")
printer.println("Changed files: ${changedFiles.sorted()}")
printer.println("Execution result: ${statisticsData.getTaskResult()}")
}
}
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.build.report.FileReportSettings
import org.jetbrains.kotlin.build.report.HttpReportSettings
import org.jetbrains.kotlin.build.report.metrics.*
import org.jetbrains.kotlin.build.report.statistics.*
import org.jetbrains.kotlin.build.report.statistics.file.ReadableFileReportData
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
import org.jetbrains.kotlin.jps.build.KotlinChunk
import org.jetbrains.kotlin.jps.build.KotlinDirtySourceFilesHolder
@@ -143,10 +144,13 @@ class JpsStatisticsReportServiceImpl(
httpService?.sendData(compileStatisticsData, loggerAdapter)
fileReportSettings?.also {
JpsFileReportService(
it.buildReportDir, context.projectDescriptor.project.name, true, loggerAdapter, it.changedFileListPerLimit
it.buildReportDir, context.projectDescriptor.project.name, true, it.changedFileListPerLimit
).process(
compileStatisticsData,
BuildStartParameters(tasks = listOf(jpsBuildTaskName)), emptyList(),
ReadableFileReportData(
compileStatisticsData,
BuildStartParameters(tasks = listOf(jpsBuildTaskName)), emptyList()
),
loggerAdapter
)
}
}