Skip to content

Commit cc7f18c

Browse files
committed
refactor(static-html): Add advisor provider issues
Add provider issues to the advisor issues table. As these issues are not mapped to an identifier, refactor the table to allow issues without an identifier. Signed-off-by: Johanna Lamppu <johanna.lamppu@doubleopen.org>
1 parent 084a37c commit cc7f18c

File tree

5 files changed

+59
-17
lines changed

5 files changed

+59
-17
lines changed

plugins/reporters/static-html/src/funTest/resources/reporter-test-input.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,11 @@ advisor:
776776
secrets:
777777
username: "username"
778778
password: "password"
779+
provider_issues:
780+
- timestamp: "2026-02-26T08:54:38.920436615Z"
781+
source: "Advisor"
782+
message: "Example provider issue."
783+
severity: "ERROR"
779784
results:
780785
Maven:org.apache.commons:commons-text:1.1:
781786
- advisor:

plugins/reporters/static-html/src/funTest/resources/static-html-reporter-test-expected-output.html

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ <h2>Index</h2>
485485
<li><a href="#rule-violation-summary">Rule Violation Summary (1 errors, 1 warnings, 0 hints to resolve)</a></li>
486486
<li><a href="#analyzer-issue-summary">Analyzer Issue Summary (1 errors, 2 warnings, 1 hints to resolve)</a></li>
487487
<li><a href="#scanner-issue-summary">Scanner Issue Summary (3 errors, 1 warnings, 1 hints to resolve)</a></li>
488-
<li><a href="#advisor-issue-summary">Advisor Issue Summary (1 errors, 1 warnings, 1 hints to resolve)</a></li>
488+
<li><a href="#advisor-issue-summary">Advisor Issue Summary (2 errors, 1 warnings, 1 hints to resolve)</a></li>
489489
<li><a href="#Gradle:org.ossreviewtoolkit:nested-fake-project:1.0.0">Gradle:org.ossreviewtoolkit:nested-fake-project:1.0.0
490490
<div class="reason">Excluded: EXAMPLE_OF - The project is an example.</div></a></li>
491491
<li><a href="#Gradle:org.ossreviewtoolkit.gradle.example:lib:1.0.0">Gradle:org.ossreviewtoolkit.gradle.example:lib:1.0.0</a></li>
@@ -760,7 +760,7 @@ <h2 id="scanner-issue-summary">Scanner Issue Summary (3 errors, 1 warnings, 1 hi
760760
</tr>
761761
</tbody>
762762
</table>
763-
<h2 id="advisor-issue-summary">Advisor Issue Summary (1 errors, 1 warnings, 1 hints to resolve)</h2>
763+
<h2 id="advisor-issue-summary">Advisor Issue Summary (2 errors, 1 warnings, 1 hints to resolve)</h2>
764764
<p>Issues from excluded components are not shown in this summary.</p>
765765
<table class="report-table">
766766
<thead>
@@ -773,6 +773,25 @@ <h2 id="advisor-issue-summary">Advisor Issue Summary (1 errors, 1 warnings, 1 hi
773773
<tbody>
774774
<tr class="error" id="advisor-issue-summary-1">
775775
<td><a href="#advisor-issue-summary-1">1</a></td>
776+
<td>-</td>
777+
<td>
778+
<p>Example provider issue.</p>
779+
<details>
780+
<summary>How to fix</summary>
781+
<ul>
782+
783+
<li><em>Step 1</em></li>
784+
785+
<li><strong>Step 2</strong></li>
786+
787+
<li><em><strong>Step 3</strong></em>
788+
<code>Some long issue resolution text to verify that overflow:scroll is working as expected.</code></li>
789+
</ul>
790+
</details>
791+
</td>
792+
</tr>
793+
<tr class="error" id="advisor-issue-summary-2">
794+
<td><a href="#advisor-issue-summary-2">2</a></td>
776795
<td>Maven:org.apache.commons:commons-text:1.1</td>
777796
<td>
778797
<p>Example advisor error.</p>
@@ -790,8 +809,8 @@ <h2 id="advisor-issue-summary">Advisor Issue Summary (1 errors, 1 warnings, 1 hi
790809
</details>
791810
</td>
792811
</tr>
793-
<tr class="warning" id="advisor-issue-summary-2">
794-
<td><a href="#advisor-issue-summary-2">2</a></td>
812+
<tr class="warning" id="advisor-issue-summary-3">
813+
<td><a href="#advisor-issue-summary-3">3</a></td>
795814
<td>Maven:org.apache.commons:commons-text:1.1</td>
796815
<td>
797816
<p>Example advisor warning.</p>
@@ -809,8 +828,8 @@ <h2 id="advisor-issue-summary">Advisor Issue Summary (1 errors, 1 warnings, 1 hi
809828
</details>
810829
</td>
811830
</tr>
812-
<tr class="hint" id="advisor-issue-summary-3">
813-
<td><a href="#advisor-issue-summary-3">3</a></td>
831+
<tr class="hint" id="advisor-issue-summary-4">
832+
<td><a href="#advisor-issue-summary-4">4</a></td>
814833
<td>Maven:org.apache.commons:commons-text:1.1</td>
815834
<td>
816835
<p>Example advisor hint.</p>

plugins/reporters/static-html/src/main/kotlin/StaticHtmlReporter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ class StaticHtmlReporter(override val descriptor: PluginDescriptor = StaticHtmlR
382382
}
383383
}
384384

385-
td { +row.id.toCoordinates() }
385+
td { +(row.id?.toCoordinates() ?: "-") }
386386

387387
td {
388388
p { issueDescription(row.issue) }

plugins/reporters/static-html/src/main/kotlin/TablesReport.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ internal data class IssueTable(
9696
val issue: TablesReportIssue,
9797

9898
/**
99-
* The identifier of the package the issue corresponds to.
99+
* The identifier of the package the issue corresponds to, if any.
100100
*/
101-
val id: Identifier
101+
val id: Identifier?
102102
)
103103
}
104104

plugins/reporters/static-html/src/main/kotlin/TablesReportModelMapper.kt

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,16 +204,34 @@ private fun getScannerIssueSummaryTable(input: ReporterInput): IssueTable =
204204
.toIssueSummaryTable(IssueTable.Type.SCANNER, input)
205205

206206
private fun getAdvisorIssueSummaryTable(input: ReporterInput): IssueTable =
207-
input.ortResult.getAdvisorIssues(omitExcluded = true, omitResolved = true)
208-
.toIssueSummaryTable(IssueTable.Type.ADVISOR, input)
207+
buildList {
208+
addAll(
209+
input.ortResult.getAdvisorIssues(omitExcluded = true, omitResolved = true)
210+
.toIssueSummaryRows(input)
211+
)
212+
213+
addAll(
214+
input.ortResult.getAdvisorProviderIssues(omitResolved = true)
215+
.toIssueSummaryRows(input)
216+
)
217+
}.sortedWith(ISSUE_ROW_COMPARATOR)
218+
.let { rows -> IssueTable(IssueTable.Type.ADVISOR, rows) }
209219

210220
private fun Map<Identifier, Set<Issue>>.toIssueSummaryTable(type: IssueTable.Type, input: ReporterInput): IssueTable {
211-
val rows = flatMap { (id, issues) ->
212-
issues.map { issue ->
213-
val resolvableIssue = issue.toTableReportIssue(input.ortResult, input.howToFixTextProvider, false)
214-
IssueTable.Row(resolvableIssue, id)
215-
}
216-
}.sortedWith(compareByDescending<IssueTable.Row> { it.issue.severity }.thenBy { it.id })
221+
val rows = toIssueSummaryRows(input).sortedWith(ISSUE_ROW_COMPARATOR)
217222

218223
return IssueTable(type, rows)
219224
}
225+
226+
private fun Map<Identifier, Set<Issue>>.toIssueSummaryRows(input: ReporterInput) =
227+
flatMap { (id, issues) -> issues.map { it.toRow(input, id) } }
228+
229+
private fun Set<Issue>.toIssueSummaryRows(input: ReporterInput) = map { it.toRow(input, null) }
230+
231+
private fun Issue.toRow(input: ReporterInput, id: Identifier?): IssueTable.Row {
232+
val resolvableIssue = toTableReportIssue(input.ortResult, input.howToFixTextProvider, false)
233+
return IssueTable.Row(resolvableIssue, id)
234+
}
235+
236+
private val ISSUE_ROW_COMPARATOR =
237+
compareByDescending<IssueTable.Row> { it.issue.severity }.thenBy { it.id }

0 commit comments

Comments
 (0)