diff options
3 files changed, 24 insertions, 1 deletions
diff --git a/its/plugin/projects/issues-project/src/file1.css b/its/plugin/projects/issues-project/src/file1.css index 972e4c3..d2c3b6b 100644 --- a/its/plugin/projects/issues-project/src/file1.css +++ b/its/plugin/projects/issues-project/src/file1.css @@ -66,3 +66,7 @@ unknown { /* S4670 | selecto :global(.nestedClassParent) { /* ignored by S4659 | selector-pseudo-class-no-unknown */ color: blue; } + +mat-form-field { /* Angular Material, ignored by S4670 | selector-type-no-unknown */ + width: 100%; +} diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorTypeNoUnknown.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorTypeNoUnknown.java index 9511d1b..a42fa9a 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorTypeNoUnknown.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/SelectorTypeNoUnknown.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 = "S4670") @@ -28,4 +30,14 @@ public class SelectorTypeNoUnknown implements CssRule { public String stylelintKey() { return "selector-type-no-unknown"; } + + @Override + public List<Object> stylelintOptions() { + return Arrays.asList(true, new StylelintIgnoreOption()); + } + + private static class StylelintIgnoreOption { + // Used by GSON serialization + private final String[] ignoreTypes = {"/^mat-/"}; + } } 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 feca51e..9016115 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 @@ -45,7 +45,8 @@ public class CssRuleTest { AtRuleNoUnknown.class, DeclarationBlockNoDuplicateProperties.class, PropertyNoUnknown.class, - SelectorPseudoClassNoUnknown.class); + SelectorPseudoClassNoUnknown.class, + SelectorTypeNoUnknown.class); for (Class ruleClass : CssRules.getRuleClasses()) { CssRule rule = (CssRule)ruleClass.getConstructor().newInstance(); @@ -70,6 +71,12 @@ public class CssRuleTest { } @Test + public void selector_type_no_unknown_options() { + String optionsAsJson = new Gson().toJson(new SelectorTypeNoUnknown().stylelintOptions()); + assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreTypes\":[\"/^mat-/\"]}]"); + } + + @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\"]}]"); |
