From 783f394006d71146f219a574290d20af53e025ff Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Tue, 19 Jul 2022 22:26:37 +0200 Subject: [PATCH] [Gradle] Remove dead code of KotlinBuildReporterHandler --- .../statistics/BuildScanStatisticsListener.kt | 2 +- .../report/KotlinBuildReporterHandler.kt | 120 ------------------ .../report/PlainTextBuildReportWriter.kt | 3 + .../kotlin/gradle/utils/formattingUtils.kt | 18 +++ 4 files changed, 22 insertions(+), 121 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildScanStatisticsListener.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildScanStatisticsListener.kt index 407107a0cf6..923fb7ce3ff 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildScanStatisticsListener.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildScanStatisticsListener.kt @@ -12,7 +12,7 @@ import org.gradle.tooling.events.OperationCompletionListener import org.gradle.tooling.events.task.TaskFinishEvent import org.jetbrains.kotlin.build.report.metrics.SizeMetricType import org.jetbrains.kotlin.gradle.plugin.stat.CompileStatisticsData -import org.jetbrains.kotlin.gradle.report.formatSize +import org.jetbrains.kotlin.gradle.utils.formatSize import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.utils.addToStdlib.measureTimeMillisWithResult import java.util.* diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt deleted file mode 100644 index d87f5690e12..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/KotlinBuildReporterHandler.kt +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.gradle.report - -import org.gradle.api.invocation.Gradle -import org.jetbrains.kotlin.gradle.utils.appendLine -import java.io.File -import kotlin.math.max - -class KotlinBuildReporterHandler { - fun buildFinished( - gradle: Gradle, - perfReportFile: File, - kotlinTaskTimeNs: Map, - allTasksTimeNs: Long, - failure: Throwable? = null - ) { - val logger = gradle.rootProject.logger - try { - perfReportFile.writeText(buildInfo(gradle, failure) + taskOverview(kotlinTaskTimeNs, allTasksTimeNs)) - logger.lifecycle("Kotlin build report is written to ${perfReportFile.canonicalPath}") - } catch (e: Throwable) { - logger.error("Could not write Kotlin build report to ${perfReportFile.canonicalPath}", e) - } - } - - private fun buildInfo(gradle: Gradle, failure: Throwable?): String { - val startParams = arrayListOf() - gradle.startParameter.apply { - startParams.add("tasks = ${taskRequests.joinToString { it.args.toString() }}") - startParams.add("excluded tasks = $excludedTaskNames") - startParams.add("current dir = $currentDir") - startParams.add("project properties args = $projectProperties") - startParams.add("system properties args = $systemPropertiesArgs") - } - - return buildString { - appendLine("Gradle start parameters:") - startParams.forEach { - appendLine(" $it") - } - if (failure != null) { - appendLine("Build failed: ${failure}") - } - appendLine() - } - } - - internal fun taskOverview(kotlinTaskTimeNs: Map, allTasksTimeNs: Long): String { - if (kotlinTaskTimeNs.isEmpty()) return buildString { appendLine("No Kotlin task was run") } - - val sb = StringBuilder() - val kotlinTotalTimeNs = kotlinTaskTimeNs.values.sum() - val ktTaskPercent = (kotlinTotalTimeNs.toDouble() / allTasksTimeNs * 100).asString(1) - - sb.appendLine("Total time for Kotlin tasks: ${formatTime(kotlinTotalTimeNs)} ($ktTaskPercent % of all tasks time)") - - val table = TextTable("Time", "% of Kotlin time", "Task") - kotlinTaskTimeNs.entries - .sortedByDescending { (_, timeNs) -> timeNs } - .forEach { (taskPath, timeNs) -> - val percent = (timeNs.toDouble() / kotlinTotalTimeNs * 100).asString(1) - table.addRow(formatTime(timeNs), "$percent %", taskPath) - } - table.printTo(sb) - sb.appendLine() - return sb.toString() - } - - internal class TextTable(vararg columnNames: String) { - private val rows = ArrayList>() - private val columnsCount = columnNames.size - private val maxLengths = IntArray(columnsCount) { columnNames[it].length } - - init { - rows.add(columnNames.toList()) - } - - fun addRow(vararg row: String) { - check(row.size == columnsCount) { "Row size ${row.size} differs from columns count $columnsCount" } - rows.add(row.toList()) - - for ((i, col) in row.withIndex()) { - maxLengths[i] = max(maxLengths[i], col.length) - } - } - - fun printTo(sb: StringBuilder) { - for (row in rows) { - sb.appendLine() - for ((i, col) in row.withIndex()) { - if (i > 0) sb.append("|") - - sb.append(col.padEnd(maxLengths[i], ' ')) - } - } - } - } -} - -internal fun formatTime(ms: Long): String { - val seconds = ms.toDouble() / 1_000 - return seconds.asString(2) + " s" -} - -private const val kbSize = 1024 -private const val mbSize = kbSize * 1024 -private const val gbSize = mbSize * 1024 - -internal fun formatSize(sizeInBytes: Long): String = when { - sizeInBytes / gbSize >= 1 -> "${(sizeInBytes.toDouble() / gbSize).asString(1)} GB" - sizeInBytes / mbSize >= 1 -> "${(sizeInBytes.toDouble() / mbSize).asString(1)} MB" - sizeInBytes / kbSize >= 1 -> "${(sizeInBytes.toDouble() / kbSize).asString(1)} KB" - else -> "$sizeInBytes B" -} - -internal fun Double.asString(decPoints: Int): String = "%,.${decPoints}f".format(this) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt index 22acd08dda5..8a7149a7220 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/PlainTextBuildReportWriter.kt @@ -11,6 +11,9 @@ import org.jetbrains.kotlin.gradle.report.data.BuildExecutionData import org.jetbrains.kotlin.gradle.report.data.BuildExecutionDataProcessor import org.jetbrains.kotlin.gradle.report.data.BuildOperationRecord import org.jetbrains.kotlin.gradle.utils.Printer +import org.jetbrains.kotlin.gradle.utils.asString +import org.jetbrains.kotlin.gradle.utils.formatSize +import org.jetbrains.kotlin.gradle.utils.formatTime import java.io.File import java.io.Serializable import java.text.SimpleDateFormat diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/formattingUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/formattingUtils.kt index b7a7ff987e4..2958db9d470 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/formattingUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/formattingUtils.kt @@ -64,3 +64,21 @@ internal fun formatContentLength(bytes: Long): String = when { } } } + +internal fun formatTime(ms: Long): String { + val seconds = ms.toDouble() / 1_000 + return seconds.asString(2) + " s" +} + +private const val kbSize = 1024 +private const val mbSize = kbSize * 1024 +private const val gbSize = mbSize * 1024 + +internal fun formatSize(sizeInBytes: Long): String = when { + sizeInBytes / gbSize >= 1 -> "${(sizeInBytes.toDouble() / gbSize).asString(1)} GB" + sizeInBytes / mbSize >= 1 -> "${(sizeInBytes.toDouble() / mbSize).asString(1)} MB" + sizeInBytes / kbSize >= 1 -> "${(sizeInBytes.toDouble() / kbSize).asString(1)} KB" + else -> "$sizeInBytes B" +} + +internal fun Double.asString(decPoints: Int): String = "%,.${decPoints}f".format(this) \ No newline at end of file