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 | |
| parent | cea9681a811f5bced88e443d5fda14ba15396343 (diff) | |
| download | sonar-css-55825cb9babbbbbd685a2b7efbca0efc248de383.tar.bz2 | |
Update S4662: Rule should be parameterized (#92)
Diffstat (limited to 'sonar-css-plugin')
| -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\"]}]"); +  }  } | 
