aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaury Levé2018-06-27 14:57:12 +0200
committerAmaury Levé2018-06-28 10:14:25 +0200
commitace698da0dd37aee4070fbabce052ec30fe89395 (patch)
tree9034a12a7d11a3f26d525e0d1ea147825303487b
parent55825cb9babbbbbd685a2b7efbca0efc248de383 (diff)
downloadsonar-css-ace698da0dd37aee4070fbabce052ec30fe89395.tar.bz2
Update S4656: Rule should be parameterized
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/DeclarationBlockNoDuplicateProperties.java11
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/rules/CssRuleTest.java14
2 files changed, 24 insertions, 1 deletions
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/DeclarationBlockNoDuplicateProperties.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/DeclarationBlockNoDuplicateProperties.java
index 5c4b00a..474ee09 100644
--- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/DeclarationBlockNoDuplicateProperties.java
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/DeclarationBlockNoDuplicateProperties.java
@@ -23,10 +23,19 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.sonar.check.Rule;
+import org.sonar.check.RuleProperty;
@Rule(key = "S4656")
public class DeclarationBlockNoDuplicateProperties implements CssRule {
+ private static final boolean DEFAULT_IGNORE_FALLBACKS = true;
+
+ @RuleProperty(
+ key = "ignoreFallbacks",
+ description = "Ignore consecutive duplicated properties with different values.",
+ defaultValue = "" + DEFAULT_IGNORE_FALLBACKS)
+ boolean ignoreFallbacks = DEFAULT_IGNORE_FALLBACKS;
+
@Override
public String stylelintKey() {
return "declaration-block-no-duplicate-properties";
@@ -34,7 +43,7 @@ public class DeclarationBlockNoDuplicateProperties implements CssRule {
@Override
public Object stylelintOptions() {
- return Arrays.asList(true, new StylelintIgnoreOption());
+ return ignoreFallbacks ? Arrays.asList(true, new StylelintIgnoreOption()) : true;
}
private static class StylelintIgnoreOption {
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 8b1e74c..cbd402d 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
@@ -50,4 +50,18 @@ public class CssRuleTest {
String optionsAsJson = new Gson().toJson(instance.stylelintOptions());
assertThat(optionsAsJson).isEqualTo("[true,{\"ignoreAtRules\":[\"foo\"]}]");
}
+
+ @Test
+ public void declaration_block_no_duplicate_properties_default() {
+ String optionsAsJson = new Gson().toJson(new DeclarationBlockNoDuplicateProperties().stylelintOptions());
+ assertThat(optionsAsJson).isEqualTo("[true,{\"ignore\":[\"consecutive-duplicates-with-different-values\"]}]");
+ }
+
+ @Test
+ public void declaration_block_no_duplicate_properties_custom() {
+ DeclarationBlockNoDuplicateProperties instance = new DeclarationBlockNoDuplicateProperties();
+ instance.ignoreFallbacks = false;
+ String optionsAsJson = new Gson().toJson(instance.stylelintOptions());
+ assertThat(optionsAsJson).isEqualTo("true");
+ }
}