aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java15
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java3
-rw-r--r--sonar-css-plugin/src/test/resources/executables/mockStylelint.js2
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"
}