diff options
| author | Amaury Levé | 2018-06-27 15:28:45 +0200 |
|---|---|---|
| committer | GitHub | 2018-06-27 15:28:45 +0200 |
| commit | 55825cb9babbbbbd685a2b7efbca0efc248de383 (patch) | |
| tree | 9e8cd834eda28d2c73c38766626d68560127670d /sonar-css-plugin/src | |
| parent | cea9681a811f5bced88e443d5fda14ba15396343 (diff) | |
| download | sonar-css-55825cb9babbbbbd685a2b7efbca0efc248de383.tar.bz2 | |
Update S4662: Rule should be parameterized (#92)
Diffstat (limited to 'sonar-css-plugin/src')
| -rw-r--r-- | sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/AtRuleNoUnknown.java | 19 | ||||
| -rw-r--r-- | sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java (renamed from sonar-css-plugin/src/test/java/org/sonar/css/plugin/RuleTest.java) | 21 |
2 files changed, 34 insertions, 6 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 0683f35..756d822 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 @@ -20,12 +20,20 @@ package org.sonar.css.plugin.rules; import java.util.Arrays; -import java.util.List; import org.sonar.check.Rule; +import org.sonar.check.RuleProperty; @Rule(key = "S4662") public class AtRuleNoUnknown implements CssRule { + private static final String DEFAULT_IGNORED_AT_RULES = "content,debug,each,else,for,function,if,include,mixin,return,while"; + + @RuleProperty( + key = "ignoreAtRules", + description = "Comma-separated list of \"at-rules\" to consider as valid.", + defaultValue = "" + DEFAULT_IGNORED_AT_RULES) + String ignoredAtRules = DEFAULT_IGNORED_AT_RULES; + @Override public String stylelintKey() { return "at-rule-no-unknown"; @@ -33,10 +41,15 @@ public class AtRuleNoUnknown implements CssRule { @Override public Object stylelintOptions() { - return Arrays.asList(true, new StylelintIgnoreOption()); + return Arrays.asList(true, new StylelintIgnoreOption(ignoredAtRules.split(","))); } private static class StylelintIgnoreOption { - private final List<String> ignoreAtRules = Arrays.asList("debug", "each", "else", "for", "function", "if", "include", "mixin", "return", "while"); + // Used by GSON serialization + private final String[] ignoreAtRules; + + StylelintIgnoreOption(String[] ignoreAtRules) { + this.ignoreAtRules = ignoreAtRules; + } } } diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/RuleTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java index f842d4e..8b1e74c 100644 --- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/RuleTest.java +++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java @@ -17,15 +17,16 @@ * 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; +package org.sonar.css.plugin.rules; +import com.google.gson.Gson; import java.lang.reflect.InvocationTargetException; import org.junit.Test; -import org.sonar.css.plugin.rules.CssRule; +import org.sonar.css.plugin.CssRules; import static org.assertj.core.api.Assertions.assertThat; -public class RuleTest { +public class CssRuleTest { @Test public void class_name_should_match_stylelint_key() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { @@ -35,4 +36,18 @@ public class RuleTest { assertThat(ruleClass.getSimpleName()).isEqualToIgnoringCase(stylelintRuleKeyWithoutUnderscore); } } + + @Test + public void at_rule_unknown_default() { + String optionsAsJson = new Gson().toJson(new AtRuleNoUnknown().stylelintOptions()); + assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreAtRules\":[\"content\",\"debug\",\"each\",\"else\",\"for\",\"function\",\"if\",\"include\",\"mixin\",\"return\",\"while\"]}]"); + } + + @Test + public void at_rule_unknown_custom() { + AtRuleNoUnknown instance = new AtRuleNoUnknown(); + instance.ignoredAtRules = "foo"; + String optionsAsJson = new Gson().toJson(instance.stylelintOptions()); + assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreAtRules\":[\"foo\"]}]"); + } } |
