From 5e1b4ef423a1ca5943232ad332d3230d9d09ec82 Mon Sep 17 00:00:00 2001 From: Elena Vilchik Date: Wed, 12 Jun 2019 11:04:18 +0200 Subject: Ignore Angular Material selector types in S4670 (#177) --- its/plugin/projects/issues-project/src/file1.css | 4 ++++ .../org/sonar/css/plugin/rules/SelectorTypeNoUnknown.java | 12 ++++++++++++ .../test/java/org/sonar/css/plugin/rules/CssRuleTest.java | 9 ++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) 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 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(); @@ -69,6 +70,12 @@ public class CssRuleTest { assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreProperties\":[\"composes\",\"exportedKey\",\"localAlias\"]}]"); } + @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()); -- cgit v1.2.3