aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/AtRuleNoUnknown.java19
-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\"]}]");
+ }
}