From dddfee0f55914f56d168ae830038bd58fe9e1e8a Mon Sep 17 00:00:00 2001 From: Léo Geoffroy Date: Wed, 9 Aug 2023 16:49:35 +0200 Subject: SONAR-20021 Manage external issues and adhoc rules --- .../issue/internal/DefaultExternalIssue.java | 16 ++++--- .../issue/internal/DefaultExternalIssueTest.java | 55 +++++++++++++--------- 2 files changed, 41 insertions(+), 30 deletions(-) (limited to 'sonar-plugin-api-impl/src') diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java index b8cd113e0b7..43da50257ab 100644 --- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java +++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java @@ -19,7 +19,7 @@ */ package org.sonar.api.batch.sensor.issue.internal; -import java.util.Collections; +import java.util.EnumMap; import java.util.Map; import javax.annotation.CheckForNull; import javax.annotation.Nullable; @@ -44,6 +44,8 @@ public class DefaultExternalIssue extends AbstractDefaultIssue impacts = new EnumMap<>(SoftwareQuality.class); + private CleanCodeAttribute cleanCodeAttribute; public DefaultExternalIssue(DefaultInputProject project) { this(project, null); @@ -67,7 +69,8 @@ public class DefaultExternalIssue extends AbstractDefaultIssue impacts() { - return Collections.emptyMap(); + return impacts; } @CheckForNull @Override public CleanCodeAttribute cleanCodeAttribute() { - return null; + return cleanCodeAttribute; } @Override @@ -152,7 +153,8 @@ public class DefaultExternalIssue extends AbstractDefaultIssue issue.save()) - .isInstanceOf(IllegalStateException.class) - .hasMessageContaining("Type is mandatory"); + assertThat(issue.type()).isNull(); + assertThat(issue.severity()).isNull(); + assertThat(issue.impacts()).isEmpty(); + + issue.save(); + + verify(storage).store(issue); } @Test @@ -145,21 +171,4 @@ public class DefaultExternalIssueTest { .isInstanceOf(IllegalStateException.class) .hasMessage("External issues must have a message"); } - - @Test - public void fail_to_store_if_no_severity() { - SensorStorage storage = mock(SensorStorage.class); - DefaultExternalIssue issue = new DefaultExternalIssue(project, storage) - .at(new DefaultIssueLocation() - .on(inputFile) - .at(inputFile.selectLine(1)) - .message("Wrong way!")) - .forRule(RuleKey.of("repo", "rule")) - .remediationEffortMinutes(10L) - .type(RuleType.BUG); - - assertThatThrownBy(() -> issue.save()) - .isInstanceOf(IllegalStateException.class) - .hasMessageContaining("Severity is mandatory"); - } } -- cgit v1.2.3