aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-css-plugin
diff options
context:
space:
mode:
authorAlban Auzeill2019-12-24 11:04:49 +0100
committerElena Vilchik2019-12-24 11:04:49 +0100
commit226b922ded2e29d0968857e4b5d547dbd47c76c8 (patch)
tree3bd5d2949056bdb0331bcca695cfce1f8a23458e /sonar-css-plugin
parent54195cb67b2eff8f38fd88d2fedb564242224750 (diff)
downloadsonar-css-226b922ded2e29d0968857e4b5d547dbd47c76c8.tar.bz2
Add parameter for S4660 to define custom pseudo-elements (#220)
Diffstat (limited to 'sonar-css-plugin')
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java28
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java15
2 files changed, 43 insertions, 0 deletions
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java
index c26dfc2..8682859 100644
--- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorPseudoElementNoUnknown.java
@@ -19,13 +19,41 @@
*/
package org.sonar.css.plugin.rules;
+import java.util.Arrays;
+import java.util.List;
import org.sonar.check.Rule;
+import org.sonar.check.RuleProperty;
+
+import static org.sonar.css.plugin.rules.RuleUtils.splitAndTrim;
@Rule(key = "S4660")
public class SelectorPseudoElementNoUnknown implements CssRule {
+ private static final String DEFAULT_IGNORE_PSEUDO_ELEMENTS = "ng-deep";
+
@Override
public String stylelintKey() {
return "selector-pseudo-element-no-unknown";
}
+
+ @RuleProperty(
+ key = "ignorePseudoElements",
+ description = "Comma-separated list of regular expressions or strings to ignore (e.g. /^custom-/).",
+ defaultValue = "" + DEFAULT_IGNORE_PSEUDO_ELEMENTS)
+ String ignorePseudoElements = DEFAULT_IGNORE_PSEUDO_ELEMENTS;
+
+ @Override
+ public List<Object> stylelintOptions() {
+ return Arrays.asList(true, new StylelintIgnorePseudoElementsOption(splitAndTrim(ignorePseudoElements)));
+ }
+
+ private static class StylelintIgnorePseudoElementsOption {
+ // Used by GSON serialization
+ private final List<String> ignorePseudoElements;
+
+ StylelintIgnorePseudoElementsOption(List<String> ignorePseudoElements) {
+ this.ignorePseudoElements = ignorePseudoElements;
+ }
+ }
+
}
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 e7945b7..bd18c4b 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,6 +46,7 @@ public class CssRuleTest {
DeclarationBlockNoDuplicateProperties.class,
PropertyNoUnknown.class,
SelectorPseudoClassNoUnknown.class,
+ SelectorPseudoElementNoUnknown.class,
SelectorTypeNoUnknown.class,
UnitNoUnknown.class);
@@ -86,6 +87,20 @@ public class CssRuleTest {
}
@Test
+ public void selector_pseudo_element_no_unknown_default() {
+ String optionsAsJson = new Gson().toJson(new SelectorPseudoElementNoUnknown().stylelintOptions());
+ assertThat(optionsAsJson).isEqualTo("[true,{\"ignorePseudoElements\":[\"ng-deep\"]}]");
+ }
+
+ @Test
+ public void selector_pseudo_element_no_unknown_custom() {
+ SelectorPseudoElementNoUnknown selectorPseudoElementNoUnknown = new SelectorPseudoElementNoUnknown();
+ selectorPseudoElementNoUnknown.ignorePseudoElements = "ng-deep, /^custom-/";
+ String optionsAsJson = new Gson().toJson(selectorPseudoElementNoUnknown.stylelintOptions());
+ assertThat(optionsAsJson).isEqualTo("[true,{\"ignorePseudoElements\":[\"ng-deep\",\"/^custom-/\"]}]");
+ }
+
+ @Test
public void units_no_unknown_options() {
String optionsAsJson = new Gson().toJson(new UnitNoUnknown().stylelintOptions());
assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreUnits\":[\"x\"]}]");