Skip to content

Commit c2fdbec

Browse files
fviernautsteenbe
authored andcommitted
refactor(evaluator)!: Turn licenseSource of violations to a Set
Prepare for combining rule violations that stem from the same license and package, but from different licenses sources. Signed-off-by: Frank Viernau <frank.viernau@gmail.com>
1 parent 3383f57 commit c2fdbec

File tree

16 files changed

+44
-41
lines changed

16 files changed

+44
-41
lines changed

evaluator/src/main/kotlin/Rule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ abstract class Rule(
139139
rule = name,
140140
pkg = pkgId,
141141
license = license,
142-
licenseSource = licenseSource,
142+
licenseSources = setOfNotNull(licenseSource),
143143
message = message,
144144
howToFix = howToFix
145145
)

evaluator/src/test/kotlin/EvaluatorTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class EvaluatorTest : WordSpec({
7878
rule = "rule 1",
7979
pkg = Identifier("type:namespace:name:1.0"),
8080
license = SpdxLicenseIdExpression("license-1"),
81-
licenseSource = LicenseSource.DETECTED,
81+
licenseSources = setOf(LicenseSource.DETECTED),
8282
severity = Severity.ERROR,
8383
message = "message 1",
8484
howToFix = "how to fix 1"
@@ -88,7 +88,7 @@ class EvaluatorTest : WordSpec({
8888
rule = "rule 2",
8989
pkg = Identifier("type:namespace:name:2.0"),
9090
license = SpdxLicenseIdExpression("license-2"),
91-
licenseSource = LicenseSource.DECLARED,
91+
licenseSources = setOf(LicenseSource.DECLARED),
9292
severity = Severity.WARNING,
9393
message = "message 2",
9494
howToFix = "how to fix 2"
@@ -102,7 +102,7 @@ class EvaluatorTest : WordSpec({
102102
rule shouldBe "rule 1"
103103
pkg shouldBe Identifier("type:namespace:name:1.0")
104104
license shouldBe "license-1".toSpdx()
105-
licenseSource shouldBe LicenseSource.DETECTED
105+
licenseSources should containExactlyInAnyOrder(LicenseSource.DETECTED)
106106
severity shouldBe Severity.ERROR
107107
message shouldBe "message 1"
108108
howToFix shouldBe "how to fix 1"
@@ -112,7 +112,7 @@ class EvaluatorTest : WordSpec({
112112
rule shouldBe "rule 2"
113113
pkg shouldBe Identifier("type:namespace:name:2.0")
114114
license shouldBe "license-2".toSpdx()
115-
licenseSource shouldBe LicenseSource.DECLARED
115+
licenseSources should containExactlyInAnyOrder(LicenseSource.DECLARED)
116116
severity shouldBe Severity.WARNING
117117
message shouldBe "message 2"
118118
howToFix shouldBe "how to fix 2"

evaluator/src/test/kotlin/RuleTest.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.ossreviewtoolkit.evaluator
2121

2222
import io.kotest.core.spec.style.WordSpec
23+
import io.kotest.matchers.collections.containExactlyInAnyOrder
2324
import io.kotest.matchers.collections.haveSize
2425
import io.kotest.matchers.should
2526
import io.kotest.matchers.shouldBe
@@ -55,7 +56,7 @@ class RuleTest : WordSpec() {
5556
violation.rule shouldBe rule.name
5657
violation.pkg shouldBe id
5758
violation.license shouldBe license
58-
violation.licenseSource shouldBe licenseSource
59+
violation.licenseSources should containExactlyInAnyOrder(licenseSource)
5960
violation.severity shouldBe Severity.HINT
6061
violation.message shouldBe message
6162
violation.howToFix shouldBe howToFix
@@ -74,7 +75,7 @@ class RuleTest : WordSpec() {
7475
violation.rule shouldBe rule.name
7576
violation.pkg shouldBe id
7677
violation.license shouldBe license
77-
violation.licenseSource shouldBe licenseSource
78+
violation.licenseSources should containExactlyInAnyOrder(licenseSource)
7879
violation.severity shouldBe Severity.WARNING
7980
violation.message shouldBe message
8081
violation.howToFix shouldBe howToFix
@@ -93,7 +94,7 @@ class RuleTest : WordSpec() {
9394
violation.rule shouldBe rule.name
9495
violation.pkg shouldBe id
9596
violation.license shouldBe license
96-
violation.licenseSource shouldBe licenseSource
97+
violation.licenseSources should containExactlyInAnyOrder(licenseSource)
9798
violation.severity shouldBe Severity.ERROR
9899
violation.message shouldBe message
99100
violation.howToFix shouldBe howToFix

model/src/main/kotlin/RuleViolation.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ data class RuleViolation(
3838
val license: SpdxSingleLicenseExpression?,
3939

4040
/**
41-
* The [source][LicenseSource] of the [license]. Can be null if the rule does not work on licenses.
41+
* The [sources][licenseSources] of the [license]. Can be empty if the rule does not work on licenses.
4242
*/
43-
val licenseSource: LicenseSource?,
43+
val licenseSources: Set<LicenseSource>,
4444

4545
/**
4646
* The severity of the rule violation.

model/src/test/kotlin/OrtResultTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ class OrtResultTest : WordSpec({
512512
rule = "rule id",
513513
pkg = Identifier("Maven", "org.ossreviewtoolkit", "resolved-violation", "0.8.15"),
514514
license = null,
515-
licenseSource = null,
515+
licenseSources = emptySet(),
516516
severity = Severity.HINT,
517517
message = "Rule violation message to resolve",
518518
howToFix = ""
@@ -534,7 +534,7 @@ class OrtResultTest : WordSpec({
534534
rule = "Resolved rule violation",
535535
pkg = Identifier("Maven", "org.ossreviewtoolkit", "resolved-violation", "0.8.15"),
536536
license = null,
537-
licenseSource = null,
537+
licenseSources = emptySet(),
538538
severity = Severity.ERROR,
539539
message = "Rule violation message to resolve",
540540
howToFix = ""
@@ -543,7 +543,7 @@ class OrtResultTest : WordSpec({
543543
rule = "Rule violation without resolution",
544544
pkg = Identifier("Maven", "com.example", "package-without-resolution", "1.0.0"),
545545
license = null,
546-
licenseSource = null,
546+
licenseSources = emptySet(),
547547
severity = Severity.WARNING,
548548
message = "Message without any resolution",
549549
howToFix = ""
@@ -552,7 +552,7 @@ class OrtResultTest : WordSpec({
552552
rule = "Rule violation below minSeverity",
553553
pkg = Identifier("Maven", "com.example", "violation-below-threshold", "3.14"),
554554
license = null,
555-
licenseSource = null,
555+
licenseSources = emptySet(),
556556
severity = Severity.HINT,
557557
message = "Message without any resolution",
558558
howToFix = ""

model/src/test/kotlin/config/RuleViolationResolutionTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ private fun ruleViolation(message: String) =
6666
rule = "",
6767
pkg = null,
6868
license = null,
69-
licenseSource = null,
69+
licenseSources = emptySet(),
7070
severity = Severity.ERROR,
7171
message = message,
7272
howToFix = ""

plugins/commands/evaluator/src/main/kotlin/EvaluateCommand.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -375,11 +375,7 @@ private fun RuleViolation.format() =
375375

376376
license?.let { license ->
377377
append(license)
378-
licenseSource?.let { source ->
379-
append(" (")
380-
append(source)
381-
append(")")
382-
}
378+
licenseSources.takeUnless { it.isEmpty() }?.joinToString(prefix = "(", postfix = ")") { it.toString() }
383379

384380
append(" - ")
385381
}

plugins/reporters/evaluated-model/src/funTest/resources/evaluated-model-reporter-test-deduplicate-expected-output.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,8 @@ rule_violations:
10701070
rule: "rule 1"
10711071
pkg: 3
10721072
license: 9
1073-
license_source: "DETECTED"
1073+
license_sources:
1074+
- "DETECTED"
10741075
severity: "ERROR"
10751076
message: "EPL-1.0 error"
10761077
how_to_fix: "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify\
@@ -1079,7 +1080,8 @@ rule_violations:
10791080
rule: "rule 2"
10801081
pkg: 2
10811082
license: 3
1082-
license_source: "DECLARED"
1083+
license_sources:
1084+
- "DECLARED"
10831085
severity: "HINT"
10841086
message: "Apache-2.0 hint"
10851087
how_to_fix: "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify\
@@ -1090,7 +1092,8 @@ rule_violations:
10901092
rule: "rule 3"
10911093
pkg: 8
10921094
license: 16
1093-
license_source: "CONCLUDED"
1095+
license_sources:
1096+
- "CONCLUDED"
10941097
severity: "WARNING"
10951098
message: "BSD-3-Clause warning"
10961099
how_to_fix: "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify\

plugins/reporters/evaluated-model/src/funTest/resources/evaluated-model-reporter-test-expected-output.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,7 @@
11571157
"rule" : "rule 1",
11581158
"pkg" : 3,
11591159
"license" : 9,
1160-
"license_source" : "DETECTED",
1160+
"license_sources" : [ "DETECTED" ],
11611161
"severity" : "ERROR",
11621162
"message" : "EPL-1.0 error",
11631163
"how_to_fix" : "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify that overflow:scroll is working as expected.\n```"
@@ -1166,7 +1166,7 @@
11661166
"rule" : "rule 2",
11671167
"pkg" : 2,
11681168
"license" : 3,
1169-
"license_source" : "DECLARED",
1169+
"license_sources" : [ "DECLARED" ],
11701170
"severity" : "HINT",
11711171
"message" : "Apache-2.0 hint",
11721172
"how_to_fix" : "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify that overflow:scroll is working as expected.\n```",
@@ -1176,7 +1176,7 @@
11761176
"rule" : "rule 3",
11771177
"pkg" : 8,
11781178
"license" : 16,
1179-
"license_source" : "CONCLUDED",
1179+
"license_sources" : [ "CONCLUDED" ],
11801180
"severity" : "WARNING",
11811181
"message" : "BSD-3-Clause warning",
11821182
"how_to_fix" : "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify that overflow:scroll is working as expected.\n```"

plugins/reporters/evaluated-model/src/funTest/resources/evaluated-model-reporter-test-expected-output.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,8 @@ rule_violations:
10701070
rule: "rule 1"
10711071
pkg: 3
10721072
license: 9
1073-
license_source: "DETECTED"
1073+
license_sources:
1074+
- "DETECTED"
10741075
severity: "ERROR"
10751076
message: "EPL-1.0 error"
10761077
how_to_fix: "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify\
@@ -1079,7 +1080,8 @@ rule_violations:
10791080
rule: "rule 2"
10801081
pkg: 2
10811082
license: 3
1082-
license_source: "DECLARED"
1083+
license_sources:
1084+
- "DECLARED"
10831085
severity: "HINT"
10841086
message: "Apache-2.0 hint"
10851087
how_to_fix: "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify\
@@ -1090,7 +1092,8 @@ rule_violations:
10901092
rule: "rule 3"
10911093
pkg: 8
10921094
license: 16
1093-
license_source: "CONCLUDED"
1095+
license_sources:
1096+
- "CONCLUDED"
10941097
severity: "WARNING"
10951098
message: "BSD-3-Clause warning"
10961099
how_to_fix: "* *Step 1*\n* __Step 2__\n* ***Step 3***\n```\nSome long text verify\

0 commit comments

Comments
 (0)