aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElena Vilchik2019-06-12 15:50:01 +0200
committerTibor Blenessy2019-06-12 15:50:01 +0200
commitb464f83be5076ebdbee253b34f1a872fbf708402 (patch)
tree0ca1a77d77d0023de21e9a74b679af55f659a6ad
parentfd0139f0673ceaeabab4db3112cf18fff69f3c81 (diff)
downloadsonar-css-b464f83be5076ebdbee253b34f1a872fbf708402.tar.bz2
Consider 'x' unit as compliant for S4653 (#178)
-rw-r--r--its/plugin/projects/issues-project/src/file1.css6
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java12
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java9
3 files changed, 26 insertions, 1 deletions
diff --git a/its/plugin/projects/issues-project/src/file1.css b/its/plugin/projects/issues-project/src/file1.css
index d2c3b6b..d53007e 100644
--- a/its/plugin/projects/issues-project/src/file1.css
+++ b/its/plugin/projects/issues-project/src/file1.css
@@ -70,3 +70,9 @@ unknown { /* S4670 | selecto
mat-form-field { /* Angular Material, ignored by S4670 | selector-type-no-unknown */
width: 100%;
}
+
+div {
+ background-image: image-set(
+ '/images/some-image-1x.jpg' 1x, /* 'x' is synonym to 'dppx', ignored by S4653 | unit-no-unknown */
+ );
+}
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java
index 70f67c2..8733aaa 100644
--- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java
@@ -19,6 +19,8 @@
*/
package org.sonar.css.plugin.rules;
+import java.util.Arrays;
+import java.util.List;
import org.sonar.check.Rule;
@Rule(key = "S4653")
@@ -28,4 +30,14 @@ public class UnitNoUnknown implements CssRule {
public String stylelintKey() {
return "unit-no-unknown";
}
+
+ @Override
+ public List<Object> stylelintOptions() {
+ return Arrays.asList(true, new StylelintIgnoreOption());
+ }
+
+ private static class StylelintIgnoreOption {
+ // Used by GSON serialization
+ private final String[] ignoreUnits = {"x"};
+ }
}
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java
index 9016115..6a147bc 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java
@@ -46,7 +46,8 @@ public class CssRuleTest {
DeclarationBlockNoDuplicateProperties.class,
PropertyNoUnknown.class,
SelectorPseudoClassNoUnknown.class,
- SelectorTypeNoUnknown.class);
+ SelectorTypeNoUnknown.class,
+ UnitNoUnknown.class);
for (Class ruleClass : CssRules.getRuleClasses()) {
CssRule rule = (CssRule)ruleClass.getConstructor().newInstance();
@@ -77,6 +78,12 @@ public class CssRuleTest {
}
@Test
+ public void units_no_unknown_options() {
+ String optionsAsJson = new Gson().toJson(new UnitNoUnknown().stylelintOptions());
+ assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreUnits\":[\"x\"]}]");
+ }
+
+ @Test
public void at_rule_unknown_default() {
String optionsAsJson = new Gson().toJson(new AtRuleNoUnknown().stylelintOptions());
assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreAtRules\":[\"value\",\"at-root\",\"content\",\"debug\",\"each\",\"else\",\"error\",\"for\",\"function\",\"if\",\"include\",\"mixin\",\"return\",\"warn\",\"while\",\"extend\"]}]");