From d27a1ac47a343ff76cc1135b0fdde9c89c1b3455 Mon Sep 17 00:00:00 2001 From: Elena Vilchik Date: Fri, 14 Jun 2019 10:37:59 +0200 Subject: S4670: add parameter for ignored types (#182) --- .../sonar/css/plugin/rules/AtRuleNoUnknown.java | 8 +++-- .../java/org/sonar/css/plugin/rules/CssRule.java | 1 + .../java/org/sonar/css/plugin/rules/RuleUtils.java | 35 ++++++++++++++++++++++ .../css/plugin/rules/SelectorTypeNoUnknown.java | 19 ++++++++++-- 4 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/RuleUtils.java (limited to 'sonar-css-plugin/src/main/java') 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 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 ignoreAtRules; - StylelintIgnoreOption(String[] ignoreAtRules) { + StylelintIgnoreOption(List 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 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 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 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 ignoreTypes; + + StylelintIgnoreOption(List ignoreTypes) { + this.ignoreTypes = ignoreTypes; + } } } -- cgit v1.2.3