From 2848c22903a5def7578c0e8650c396f205de4df1 Mon Sep 17 00:00:00 2001 From: Frank Viernau <frank_viernau@epam.com> Date: Wed, 10 Apr 2024 16:10:50 +0200 Subject: [PATCH] refactor(model): Add `minSeverity` as param to `getIssues()` Signed-off-by: Frank Viernau <frank_viernau@epam.com> --- model/src/main/kotlin/OrtResult.kt | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/model/src/main/kotlin/OrtResult.kt b/model/src/main/kotlin/OrtResult.kt index 7abc2526cfaf1..107aeec2b6933 100644 --- a/model/src/main/kotlin/OrtResult.kt +++ b/model/src/main/kotlin/OrtResult.kt @@ -246,21 +246,29 @@ data class OrtResult( /** * Return a map of all de-duplicated [Issue]s associated by [Identifier]. If [omitExcluded] is set to true, excluded * issues are omitted from the result. If [omitResolved] is set to true, resolved issues are omitted from the - * result. + * result. Issues with [severity][Issue.severity] below [minSeverity] are omitted from the result. */ @JsonIgnore - fun getIssues(omitExcluded: Boolean = false, omitResolved: Boolean = false): Map<Identifier, Set<Issue>> { + fun getIssues( + omitExcluded: Boolean = false, + omitResolved: Boolean = false, + minSeverity: Severity = Severity.entries.min() + ): Map<Identifier, Set<Issue>> { val analyzerIssues = analyzer?.result?.getAllIssues().orEmpty() val scannerIssues = scanner?.getAllIssues().orEmpty() val advisorIssues = advisor?.results?.getIssues().orEmpty() val allIssues = analyzerIssues.zipWithCollections(scannerIssues).zipWithCollections(advisorIssues) - return allIssues.mapValues { (_, issues) -> - issues.filterTo(mutableSetOf()) { !omitResolved || !isResolved(it) } - }.filter { (id, issues) -> - issues.isNotEmpty() && (!omitExcluded || !isExcluded(id)) - } + return allIssues.mapNotNull { (id, issues) -> + if (omitExcluded && isExcluded(id)) return@mapNotNull null + + val filteredIssues = issues.filterTo(mutableSetOf()) { + (!omitResolved || !isResolved(it)) && it.severity >= minSeverity + } + + filteredIssues.takeUnless { it.isEmpty() }?.let { id to it } + }.toMap() } /** @@ -285,10 +293,7 @@ data class OrtResult( */ @JsonIgnore fun getOpenIssues(minSeverity: Severity = Severity.WARNING) = - getIssues(omitExcluded = true, omitResolved = true) - .values - .flatten() - .filter { it.severity >= minSeverity } + getIssues(omitExcluded = true, omitResolved = true, minSeverity = minSeverity).values.flatten() /** * Return a list of [PackageConfiguration]s for the given [packageId] and [provenance].