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(
|
data class FileReportSettings(
|
||||||
val buildReportDir: File,
|
val buildReportDir: File,
|
||||||
|
val changedFileListPerLimit: Int? = null,
|
||||||
val includeMetricsInReport: Boolean = false,
|
val includeMetricsInReport: Boolean = false,
|
||||||
) : Serializable {
|
) : Serializable {
|
||||||
companion object {
|
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.build.report.statistics.file.FileReportService
|
||||||
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
|
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import kotlin.math.min
|
||||||
|
|
||||||
internal class JpsFileReportService(
|
internal class JpsFileReportService(
|
||||||
buildReportDir: File,
|
buildReportDir: File,
|
||||||
projectName: String,
|
projectName: String,
|
||||||
printMetrics: Boolean,
|
printMetrics: Boolean,
|
||||||
logger: JpsKotlinLogger,
|
logger: JpsKotlinLogger,
|
||||||
|
private val changedFileListPerLimit: Int?
|
||||||
) : FileReportService<JpsBuildTime, JpsBuildPerformanceMetric>(buildReportDir, projectName, printMetrics, logger) {
|
) : FileReportService<JpsBuildTime, JpsBuildPerformanceMetric>(buildReportDir, projectName, printMetrics, logger) {
|
||||||
override fun printCustomTaskMetrics(statisticsData: CompileStatisticsData<JpsBuildTime, JpsBuildPerformanceMetric>) {
|
override fun printCustomTaskMetrics(statisticsData: CompileStatisticsData<JpsBuildTime, JpsBuildPerformanceMetric>) {
|
||||||
p.print("Changed files: ${statisticsData.getChanges().sorted()}")
|
val changedFiles = statisticsData.getChanges().let { changes ->
|
||||||
p.print("Execution result: ${statisticsData.getTaskResult()}")
|
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.build.report.statistics.*
|
||||||
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
|
import org.jetbrains.kotlin.compilerRunner.JpsKotlinLogger
|
||||||
import org.jetbrains.kotlin.jps.build.KotlinChunk
|
import org.jetbrains.kotlin.jps.build.KotlinChunk
|
||||||
import org.jetbrains.kotlin.jps.build.KotlinCompileContext
|
|
||||||
import org.jetbrains.kotlin.jps.build.KotlinDirtySourceFilesHolder
|
import org.jetbrains.kotlin.jps.build.KotlinDirtySourceFilesHolder
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
@@ -30,6 +29,8 @@ internal val statisticsReportServiceKey = GlobalContextKey<JpsStatisticsReportSe
|
|||||||
|
|
||||||
sealed class JpsStatisticsReportService {
|
sealed class JpsStatisticsReportService {
|
||||||
companion object {
|
companion object {
|
||||||
|
private const val DEFAULT_CHANGED_FILE_LIST_LIMIT = 20
|
||||||
|
|
||||||
internal fun create(): JpsStatisticsReportService {
|
internal fun create(): JpsStatisticsReportService {
|
||||||
val fileReportSettings = initFileReportSettings()
|
val fileReportSettings = initFileReportSettings()
|
||||||
val httpReportSettings = initHttpReportSettings()
|
val httpReportSettings = initHttpReportSettings()
|
||||||
@@ -45,7 +46,9 @@ sealed class JpsStatisticsReportService {
|
|||||||
context.getUserData(statisticsReportServiceKey) ?: DummyJpsStatisticsReportService
|
context.getUserData(statisticsReportServiceKey) ?: DummyJpsStatisticsReportService
|
||||||
|
|
||||||
private fun initFileReportSettings(): FileReportSettings? {
|
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? {
|
private fun initHttpReportSettings(): HttpReportSettings? {
|
||||||
@@ -140,7 +143,7 @@ class JpsStatisticsReportServiceImpl(
|
|||||||
httpService?.sendData(compileStatisticsData, loggerAdapter)
|
httpService?.sendData(compileStatisticsData, loggerAdapter)
|
||||||
fileReportSettings?.also {
|
fileReportSettings?.also {
|
||||||
JpsFileReportService(
|
JpsFileReportService(
|
||||||
it.buildReportDir, context.projectDescriptor.project.name, true, loggerAdapter
|
it.buildReportDir, context.projectDescriptor.project.name, true, loggerAdapter, it.changedFileListPerLimit
|
||||||
).process(
|
).process(
|
||||||
compileStatisticsData,
|
compileStatisticsData,
|
||||||
BuildStartParameters(tasks = listOf(jpsBuildTaskName)), emptyList(),
|
BuildStartParameters(tasks = listOf(jpsBuildTaskName)), emptyList(),
|
||||||
|
|||||||
+4
-1
@@ -42,7 +42,10 @@ internal fun reportingSettings(project: Project): ReportingSettings {
|
|||||||
project.rootProject.buildDir
|
project.rootProject.buildDir
|
||||||
}).resolve("reports/kotlin-build")
|
}).resolve("reports/kotlin-build")
|
||||||
val includeMetricsInReport = properties.buildReportMetrics || buildReportMode == BuildReportMode.VERBOSE
|
val includeMetricsInReport = properties.buildReportMetrics || buildReportMode == BuildReportMode.VERBOSE
|
||||||
FileReportSettings(buildReportDir = buildReportDir, includeMetricsInReport = includeMetricsInReport)
|
FileReportSettings(
|
||||||
|
buildReportDir = buildReportDir,
|
||||||
|
includeMetricsInReport = includeMetricsInReport
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user