From 29c541dc4886e8f5b1023401caf4144847b20a7b Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Tue, 10 Apr 2018 15:41:07 +0200 Subject: [PATCH] SONAR-10543 Fix mandatory fields --- .../rule/OneExternalIssuePerLineSensor.java | 5 +++- .../issue/TrackerRawInputFactory.java | 2 +- .../api/batch/sensor/issue/ExternalIssue.java | 5 ++++ .../batch/sensor/issue/NewExternalIssue.java | 5 ++++ .../issue/internal/DefaultExternalIssue.java | 18 +++++++++++--- .../internal/SensorContextTesterTest.java | 2 ++ .../internal/DefaultExternalIssueTest.java | 24 +++++++++++++++++++ .../org/sonar/scanner/issue/ModuleIssues.java | 1 + .../sonar/scanner/issue/ModuleIssuesTest.java | 3 ++- .../src/main/protobuf/scanner_report.proto | 1 - 10 files changed, 59 insertions(+), 7 deletions(-) diff --git a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/OneExternalIssuePerLineSensor.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/OneExternalIssuePerLineSensor.java index 4dbf744243b..e47ddd4ef60 100644 --- a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/OneExternalIssuePerLineSensor.java +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/OneExternalIssuePerLineSensor.java @@ -40,11 +40,12 @@ public class OneExternalIssuePerLineSensor implements Sensor { public static final Long EFFORT = 10l; public static final RuleType type = RuleType.BUG; public static final String ACTIVATE_EXTERNAL_ISSUES = "sonar.oneExternalIssuePerLine.activate"; + private static final String NAME = "One External Issue Per Line"; @Override public void describe(SensorDescriptor descriptor) { descriptor - .name("One External Issue Per Line") + .name(NAME) .onlyOnLanguages(Xoo.KEY, Xoo2.KEY) .onlyWhenConfiguration(c -> c.getBoolean(ACTIVATE_EXTERNAL_ISSUES).orElse(false)); } @@ -73,6 +74,8 @@ public class OneExternalIssuePerLineSensor implements Sensor { .on(file) .at(file.selectLine(line)) .message("This issue is generated on each line")) + .ruleTitle(NAME) + .descriptionUrl("http://oneexternalissueperline.xoo.net") .severity(Severity.valueOf(SEVERITY)) .remediationEffort(EFFORT) .type(type) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerRawInputFactory.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerRawInputFactory.java index 0bc49a026d6..0154e69b055 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerRawInputFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerRawInputFactory.java @@ -219,7 +219,7 @@ public class TrackerRawInputFactory { .setType(toRuleType(reportIssue.getType())) .setKey(RuleKey.of(RuleKey.EXTERNAL_RULE_REPO_PREFIX + reportIssue.getRuleRepository(), reportIssue.getRuleKey())) .setPluginKey(reportIssue.getRuleRepository()) - .setName(reportIssue.getRuleName()); + .setName(reportIssue.getRuleTitle()); if (reportIssue.getSeverity() != Severity.UNSET_SEVERITY) { builder.setSeverity(reportIssue.getSeverity().name()); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/ExternalIssue.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/ExternalIssue.java index cdc7d6df2f2..ec72c49de1a 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/ExternalIssue.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/ExternalIssue.java @@ -48,4 +48,9 @@ public interface ExternalIssue extends IIssue { * Type of the issue. */ RuleType type(); + + /** + * Short description of the rule. Should not depend on the issue being raised. + */ + String ruleTitle(); } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewExternalIssue.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewExternalIssue.java index 2a3f41b4f60..8049c44e1dc 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewExternalIssue.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewExternalIssue.java @@ -79,6 +79,11 @@ public interface NewExternalIssue { */ NewIssueLocation newLocation(); + /** + * Add the description of the rule. Should not depend on the issue being raised. + */ + NewExternalIssue ruleTitle(String title); + /** * Save the issue. If rule key is unknown or rule not enabled in the current quality profile then a warning is logged but no exception * is thrown. diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java index de3eed8b4e4..6bbf40078e7 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/internal/DefaultExternalIssue.java @@ -36,6 +36,7 @@ public class DefaultExternalIssue extends AbstractDefaultIssue