Add limitation for changed files list for JPS build report
#KT-63549
This commit is contained in:
committed by
Space Team
parent
6eeb459076
commit
4294c7bab7
+2
-1
@@ -10,10 +10,11 @@ import java.io.Serializable
|
||||
|
||||
data class FileReportSettings(
|
||||
val buildReportDir: File,
|
||||
val changedFileListPerLimit: Int? = null,
|
||||
val includeMetricsInReport: Boolean = false,
|
||||
) : Serializable {
|
||||
companion object {
|
||||
const val serialVersionUID: Long = 0
|
||||
const val serialVersionUID: Long = 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,15 +11,20 @@ import org.jetbrains.kotlin.build.report.statistics.CompileStatisticsData
|
||||
import org.jetbrains.kotlin.build.report.statistics.file.FileReportService
|
||||
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
|
||||
import java.io.File
|
||||
import kotlin.math.min
|
||||
|
||||
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>) {
|
||||
p.print("Changed files: ${statisticsData.getChanges().sorted()}")
|
||||
p.print("Execution result: ${statisticsData.getTaskResult()}")
|
||||
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()}")
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.build.report.metrics.*
|
||||
import org.jetbrains.kotlin.build.report.statistics.*
|
||||
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
|
||||
import org.jetbrains.kotlin.jps.build.KotlinChunk
|
||||
import org.jetbrains.kotlin.jps.build.KotlinCompileContext
|
||||
import org.jetbrains.kotlin.jps.build.KotlinDirtySourceFilesHolder
|
||||
import java.io.File
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
@@ -30,6 +29,8 @@ internal val statisticsReportServiceKey = GlobalContextKey<JpsStatisticsReportSe
|
||||
|
||||
sealed class JpsStatisticsReportService {
|
||||
companion object {
|
||||
private const val DEFAULT_CHANGED_FILE_LIST_LIMIT = 20
|
||||
|
||||
internal fun create(): JpsStatisticsReportService {
|
||||
val fileReportSettings = initFileReportSettings()
|
||||
val httpReportSettings = initHttpReportSettings()
|
||||
@@ -45,7 +46,9 @@ sealed class JpsStatisticsReportService {
|
||||
context.getUserData(statisticsReportServiceKey) ?: DummyJpsStatisticsReportService
|
||||
|
||||
private fun initFileReportSettings(): FileReportSettings? {
|
||||
return System.getProperty("kotlin.build.report.file.output_dir")?.let { FileReportSettings(File(it)) }
|
||||
return System.getProperty("kotlin.build.report.file.output_dir")?.let {
|
||||
FileReportSettings(File(it), System.getProperty("kotlin.build.report.file.change_file_limit")?.toInt() ?: DEFAULT_CHANGED_FILE_LIST_LIMIT)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initHttpReportSettings(): HttpReportSettings? {
|
||||
@@ -140,7 +143,7 @@ class JpsStatisticsReportServiceImpl(
|
||||
httpService?.sendData(compileStatisticsData, loggerAdapter)
|
||||
fileReportSettings?.also {
|
||||
JpsFileReportService(
|
||||
it.buildReportDir, context.projectDescriptor.project.name, true, loggerAdapter
|
||||
it.buildReportDir, context.projectDescriptor.project.name, true, loggerAdapter, it.changedFileListPerLimit
|
||||
).process(
|
||||
compileStatisticsData,
|
||||
BuildStartParameters(tasks = listOf(jpsBuildTaskName)), emptyList(),
|
||||
|
||||
+4
-1
@@ -42,7 +42,10 @@ internal fun reportingSettings(project: Project): ReportingSettings {
|
||||
project.rootProject.buildDir
|
||||
}).resolve("reports/kotlin-build")
|
||||
val includeMetricsInReport = properties.buildReportMetrics || buildReportMode == BuildReportMode.VERBOSE
|
||||
FileReportSettings(buildReportDir = buildReportDir, includeMetricsInReport = includeMetricsInReport)
|
||||
FileReportSettings(
|
||||
buildReportDir = buildReportDir,
|
||||
includeMetricsInReport = includeMetricsInReport
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user