diff options
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"        } | 
