From 17dbc076acbca5722239f7f639f37d4739d4738e Mon Sep 17 00:00:00 2001 From: Alain Kermis Date: Thu, 26 Oct 2023 17:35:20 +0200 Subject: [PATCH] SONAR-20896 Adjust Gitlab vulnerabilities with new Clean Code Taxonomy --- .../src/it/java/org/sonar/db/issue/IssueDaoIT.java | 13 +++++++++++++ .../java/org/sonar/db/issue/IssueListQuery.java | 14 ++++++++++++++ .../resources/org/sonar/db/issue/IssueMapper.xml | 9 +++++++++ 3 files changed, 36 insertions(+) diff --git a/server/sonar-db-dao/src/it/java/org/sonar/db/issue/IssueDaoIT.java b/server/sonar-db-dao/src/it/java/org/sonar/db/issue/IssueDaoIT.java index f65f56f6129..d1f9ba2bb44 100644 --- a/server/sonar-db-dao/src/it/java/org/sonar/db/issue/IssueDaoIT.java +++ b/server/sonar-db-dao/src/it/java/org/sonar/db/issue/IssueDaoIT.java @@ -874,6 +874,19 @@ public class IssueDaoIT { assertThat(results.stream().toList()).containsExactlyInAnyOrderElementsOf(expectedKeys); } + @Test + public void selectIssueKeysByQuery_whenFilteredWithSoftwareQualities_shouldGetThoseIssuesOnly() { + prepareTables(); // One of the issues has software quality impact: SECURITY + + List results = underTest.selectIssueKeysByQuery( + db.getSession(), + newIssueListQueryBuilder().project(PROJECT_KEY).softwareQualities(List.of("SECURITY")).build(), + Pagination.forPage(1).andSize(10)); + + List expectedKeys = List.of("I1"); + assertThat(results.stream().toList()).containsExactlyInAnyOrderElementsOf(expectedKeys); + } + @Test public void updateIfBeforeSelectedDate_whenCalledWithBeforeSelectDate_shouldUpdateImpacts() { prepareTables(); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueListQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueListQuery.java index 217f047ab6c..185692e70e8 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueListQuery.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueListQuery.java @@ -38,6 +38,7 @@ public class IssueListQuery { private final Collection types; private final Collection statuses; private final Collection resolutions; + private final Collection softwareQualities; private IssueListQuery(IssueListQueryBuilder issueListQueryBuilder) { this.project = issueListQueryBuilder.project; @@ -56,6 +57,9 @@ public class IssueListQuery { this.resolutions = ofNullable(issueListQueryBuilder.resolutions) .map(Collections::unmodifiableCollection) .orElse(emptyList()); + this.softwareQualities = ofNullable(issueListQueryBuilder.softwareQualities) + .map(Collections::unmodifiableCollection) + .orElse(emptyList()); } public String getProject() { @@ -98,6 +102,10 @@ public class IssueListQuery { return resolutions; } + public Collection getSoftwareQualities() { + return softwareQualities; + } + public static final class IssueListQueryBuilder { private String project; private String branch; @@ -109,6 +117,7 @@ public class IssueListQuery { private Collection types; private Collection statuses; private Collection resolutions; + private Collection softwareQualities; private IssueListQueryBuilder() { } @@ -167,6 +176,11 @@ public class IssueListQuery { return this; } + public IssueListQueryBuilder softwareQualities(Collection softwareQualities) { + this.softwareQualities = softwareQualities; + return this; + } + public IssueListQuery build() { return new IssueListQuery(this); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/issue/IssueMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/issue/IssueMapper.xml index 5332d687721..9e042bc90f7 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/issue/IssueMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/issue/IssueMapper.xml @@ -668,6 +668,9 @@ inner join components root on root.uuid=i.project_uuid inner join project_branches pb on pb.uuid=i.project_uuid left join new_code_reference_issues n on i.kee = n.issue_key + + left join issues_impacts im on i.kee = im.issue_key + root.kee = #{query.project,jdbcType=VARCHAR} @@ -687,6 +690,12 @@ #{type,jdbcType=VARCHAR} + + AND im.software_quality IN + + #{type,jdbcType=VARCHAR} + + AND i.status IN -- 2.39.5