in baseline-cli/src/main/kotlin/CommandLineResultsPrinter.kt [8:45]
fun printResultsWithBaselineState(results: List<Result>, includeAbsent: Boolean) {
val resultsCountByBaselineState = results.groupingBy { it.baselineState }.eachCount()
val unchanged = resultsCountByBaselineState[Result.BaselineState.UNCHANGED] ?: 0
val new = resultsCountByBaselineState[Result.BaselineState.NEW] ?: 0
val absent = resultsCountByBaselineState[Result.BaselineState.ABSENT] ?: 0
val absentLine = if (includeAbsent) ", ABSENT: $absent" else ""
val groupingMessage =
"Grouping problems according to baseline: UNCHANGED: $unchanged, NEW: $new$absentLine"
val countedProblems = (
results
.takeIf { !includeAbsent }?.filter { it.baselineState != Result.BaselineState.ABSENT }
?: results)
.groupingBy {
Triple(
inspectionIdToName.invoke(it.ruleId),
it.baselineState,
it.level
)
}.eachCount()
printProblemsCountTable(
"Qodana - Baseline summary",
groupingMessage,
listOf(
"Name",
"Baseline",
"Severity"
),
listOf(50, 0, 0),
countedProblems,
compareByDescending<Map.Entry<Triple<String, Result.BaselineState, Level>, Int>> { it.key.second.order }
.thenByDescending { it.key.third }.thenByDescending { it.value }.thenBy { it.key.first }
) {
listOf(it.first, it.second.value().uppercase(), it.third.toString())
}
}