diff options
| author | Elena Vilchik | 2019-06-14 10:37:59 +0200 | 
|---|---|---|
| committer | GitHub | 2019-06-14 10:37:59 +0200 | 
| commit | d27a1ac47a343ff76cc1135b0fdde9c89c1b3455 (patch) | |
| tree | 367c93f0392853175b62555ca525f9e3857ba956 /sonar-css-plugin/src | |
| parent | eb017c3b5e0b4652210fb7bcd0a68fe0c36b29cf (diff) | |
| download | sonar-css-d27a1ac47a343ff76cc1135b0fdde9c89c1b3455.tar.bz2 | |
S4670: add parameter for ignored types (#182)
Diffstat (limited to 'sonar-css-plugin/src')
5 files changed, 69 insertions, 8 deletions
| diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/AtRuleNoUnknown.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/AtRuleNoUnknown.java index bed6846..e4690d2 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/AtRuleNoUnknown.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/AtRuleNoUnknown.java @@ -24,6 +24,8 @@ 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 = "S4662")  public class AtRuleNoUnknown implements CssRule { @@ -42,14 +44,14 @@ public class AtRuleNoUnknown implements CssRule {    @Override    public List<Object> stylelintOptions() { -    return Arrays.asList(true, new StylelintIgnoreOption(ignoredAtRules.split(","))); +    return Arrays.asList(true, new StylelintIgnoreOption(splitAndTrim(ignoredAtRules)));    }    private static class StylelintIgnoreOption {      // Used by GSON serialization -    private final String[] ignoreAtRules; +    private final List<String> ignoreAtRules; -    StylelintIgnoreOption(String[] ignoreAtRules) { +    StylelintIgnoreOption(List<String> ignoreAtRules) {        this.ignoreAtRules = ignoreAtRules;      }    } diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/CssRule.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/CssRule.java index 14f1483..7df90a3 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/CssRule.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/CssRule.java @@ -29,4 +29,5 @@ public interface CssRule {    default List<Object> stylelintOptions() {      return Collections.emptyList();    } +  } diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/RuleUtils.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/RuleUtils.java new file mode 100644 index 0000000..1383ac6 --- /dev/null +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/RuleUtils.java @@ -0,0 +1,35 @@ +/* + * SonarCSS + * Copyright (C) 2018-2019 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. + */ +package org.sonar.css.plugin.rules; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class RuleUtils { + +  private RuleUtils(){ +  } + +  public static List<String> splitAndTrim(String parameterValue) { +    String[] split = parameterValue.split(","); +    return Arrays.stream(split).map(String::trim).collect(Collectors.toList()); +  } +} 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 a42fa9a..abcf430 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 @@ -22,10 +22,21 @@ 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 = "S4670")  public class SelectorTypeNoUnknown implements CssRule { +  private static final String DEFAULT_IGNORED_TYPES = "/^mat-/"; + +  @RuleProperty( +    key = "ignoreTypes", +    description = "Comma-separated list of regular expressions for selector types to consider as valid.", +    defaultValue = "" + DEFAULT_IGNORED_TYPES) +  String ignoreTypes = DEFAULT_IGNORED_TYPES; +    @Override    public String stylelintKey() {      return "selector-type-no-unknown"; @@ -33,11 +44,15 @@ public class SelectorTypeNoUnknown implements CssRule {    @Override    public List<Object> stylelintOptions() { -    return Arrays.asList(true, new StylelintIgnoreOption()); +    return Arrays.asList(true, new StylelintIgnoreOption(splitAndTrim(ignoreTypes)));    }    private static class StylelintIgnoreOption {      // Used by GSON serialization -    private final String[] ignoreTypes = {"/^mat-/"}; +    private final List<String> ignoreTypes; + +    StylelintIgnoreOption(List<String> ignoreTypes) { +      this.ignoreTypes = ignoreTypes; +    }    }  } 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 6a147bc..044f4f4 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 @@ -72,12 +72,20 @@ public class CssRuleTest {    }    @Test -  public void selector_type_no_unknown_options() { +  public void selector_type_no_unknown_default() {      String optionsAsJson = new Gson().toJson(new SelectorTypeNoUnknown().stylelintOptions());      assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreTypes\":[\"/^mat-/\"]}]");    }    @Test +  public void selector_type_no_unknown_custom() { +    SelectorTypeNoUnknown selectorTypeNoUnknown = new SelectorTypeNoUnknown(); +    selectorTypeNoUnknown.ignoreTypes = "/^mat-/, /^fa-/"; +    String optionsAsJson = new Gson().toJson(selectorTypeNoUnknown.stylelintOptions()); +    assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreTypes\":[\"/^mat-/\",\"/^fa-/\"]}]"); +  } + +  @Test    public void units_no_unknown_options() {      String optionsAsJson = new Gson().toJson(new UnitNoUnknown().stylelintOptions());      assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreUnits\":[\"x\"]}]"); @@ -92,9 +100,9 @@ public class CssRuleTest {    @Test    public void at_rule_unknown_custom() {      AtRuleNoUnknown instance = new AtRuleNoUnknown(); -    instance.ignoredAtRules = "foo"; +    instance.ignoredAtRules = "foo, bar";      String optionsAsJson = new Gson().toJson(instance.stylelintOptions()); -    assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreAtRules\":[\"foo\"]}]"); +    assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreAtRules\":[\"foo\",\"bar\"]}]");    }    @Test | 
