diff options
Diffstat (limited to 'sonar-css-plugin')
3 files changed, 18 insertions, 2 deletions
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java index 4664921..c669b30 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java @@ -28,6 +28,8 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Collections; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.rule.CheckFactory; @@ -94,6 +96,17 @@ public class CssRuleSensor implements Sensor { Files.write(Paths.get(configPath), Collections.singletonList(configAsJson), StandardCharsets.UTF_8); } + private static String normalizeMessage(String message) { + // stylelint messages have format "message (rulekey)" + Pattern pattern = Pattern.compile("(.+)\\([a-z\\-]+\\)"); + Matcher matcher = pattern.matcher(message); + if (matcher.matches()) { + return matcher.group(1); + } else { + return message; + } + } + private static void saveIssues(SensorContext context, CssRules cssRules, IssuesPerFile[] issues) { FileSystem fileSystem = context.fileSystem(); @@ -107,7 +120,7 @@ public class CssRuleSensor implements Sensor { NewIssueLocation location = sonarIssue.newLocation() .on(inputFile) .at(inputFile.selectLine(issue.line)) - .message(issue.text); + .message(normalizeMessage(issue.text)); RuleKey ruleKey = cssRules.getActiveSonarKey(issue.rule); if (ruleKey == null) { diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java index 471c4ef..06295d7 100644 --- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java +++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java @@ -37,6 +37,7 @@ import org.sonar.api.batch.rule.CheckFactory; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor; import org.sonar.api.batch.sensor.internal.SensorContextTester; +import org.sonar.api.batch.sensor.issue.Issue; import org.sonar.css.plugin.bundle.BundleHandler; import org.sonar.css.plugin.bundle.CssBundleHandler; @@ -72,6 +73,8 @@ public class CssRuleSensorTest { sensor.execute(context); assertThat(context.allIssues()).hasSize(1); + Issue issue = context.allIssues().iterator().next(); + assertThat(issue.primaryLocation().message()).isEqualTo("some message"); Path configPath = Paths.get(context.fileSystem().workDir().getAbsolutePath(), "testconfig.json"); assertThat(Files.readAllLines(configPath)).containsOnly("{\"rules\":{\"color-no-invalid-hex\":true}}"); diff --git a/sonar-css-plugin/src/test/resources/executables/mockStylelint.js b/sonar-css-plugin/src/test/resources/executables/mockStylelint.js index e8c1667..70959dc 100644 --- a/sonar-css-plugin/src/test/resources/executables/mockStylelint.js +++ b/sonar-css-plugin/src/test/resources/executables/mockStylelint.js @@ -7,7 +7,7 @@ var result = [ warnings: [ { - text: "some message", + text: "some message (color-no-invalid-hex)", line: 2, rule: "color-no-invalid-hex" } |
