aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-css-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-css-plugin')
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRules.java18
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRulesDefinition.java4
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java31
-rw-r--r--sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.html20
-rw-r--r--sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.json16
-rw-r--r--sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/Sonar_way_profile.json3
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssLanguageTest.java2
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java4
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/SonarWayProfileTest.java2
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/TokenizerTest.java2
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/bundle/CssBundleHandlerTest.java2
11 files changed, 88 insertions, 16 deletions
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRules.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRules.java
index 4fdf3f5..1dac08c 100644
--- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRules.java
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRules.java
@@ -19,17 +19,19 @@
*/
package org.sonar.css.plugin;
+import org.sonar.api.batch.rule.CheckFactory;
+import org.sonar.api.batch.rule.Checks;
+import org.sonar.api.rule.RuleKey;
+import org.sonar.css.plugin.rules.ColorNoInvalidHex;
+import org.sonar.css.plugin.rules.CssRule;
+import org.sonar.css.plugin.rules.UnitNoUnknown;
+
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.sonar.api.batch.rule.CheckFactory;
-import org.sonar.api.batch.rule.Checks;
-import org.sonar.api.rule.RuleKey;
-import org.sonar.css.plugin.rules.ColorNoInvalidHex;
-import org.sonar.css.plugin.rules.CssRule;
public class CssRules {
@@ -37,7 +39,8 @@ public class CssRules {
private final StylelintConfig config = new StylelintConfig();
public CssRules(CheckFactory checkFactory) {
- Checks<CssRule> checks = checkFactory.<CssRule>create(CssRulesDefinition.REPOSITORY_KEY).addAnnotatedChecks((Iterable) getRuleClasses());
+ Checks<CssRule> checks = checkFactory.<CssRule>create(CssRulesDefinition.REPOSITORY_KEY)
+ .addAnnotatedChecks((Iterable) getRuleClasses());
Collection<CssRule> enabledRules = checks.all();
stylelintKeyToRuleKey = new HashMap<>();
for (CssRule rule : enabledRules) {
@@ -48,7 +51,8 @@ public class CssRules {
public static List<Class> getRuleClasses() {
return Collections.unmodifiableList(Arrays.asList(
- ColorNoInvalidHex.class
+ ColorNoInvalidHex.class,
+ UnitNoUnknown.class
));
}
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRulesDefinition.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRulesDefinition.java
index 196252f..a338d7f 100644
--- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRulesDefinition.java
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRulesDefinition.java
@@ -19,9 +19,7 @@
*/
package org.sonar.css.plugin;
-import java.util.Collections;
import org.sonar.api.server.rule.RulesDefinition;
-import org.sonar.css.plugin.rules.ColorNoInvalidHex;
import org.sonarsource.analyzer.commons.RuleMetadataLoader;
import static org.sonar.css.plugin.SonarWayProfile.PROFILE_PATH;
@@ -40,7 +38,7 @@ public class CssRulesDefinition implements RulesDefinition {
.setName(RULE_REPOSITORY_NAME);
RuleMetadataLoader ruleMetadataLoader = new RuleMetadataLoader(RESOURCE_FOLDER, PROFILE_PATH);
- ruleMetadataLoader.addRulesByAnnotatedClass(repository, Collections.singletonList(ColorNoInvalidHex.class));
+ ruleMetadataLoader.addRulesByAnnotatedClass(repository, CssRules.getRuleClasses());
repository.done();
}
}
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java
new file mode 100644
index 0000000..eee43db
--- /dev/null
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/rules/UnitNoUnknown.java
@@ -0,0 +1,31 @@
+/*
+ * SonarCSS
+ * Copyright (C) 2018-2018 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 org.sonar.check.Rule;
+
+@Rule(key = "S4653")
+public class UnitNoUnknown implements CssRule {
+
+ @Override
+ public String stylelintKey() {
+ return "unit-no-unknown";
+ }
+}
diff --git a/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.html b/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.html
new file mode 100644
index 0000000..283bf5d
--- /dev/null
+++ b/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.html
@@ -0,0 +1,20 @@
+<p>The W3C specifications define the <code>units</code> that can be used with lengths. A unit that is not part of the list of supported ones is likely
+to be a typo and will be seen as a UI bug by the user.</p>
+<p>This rule raises an issue each time a unit is not officially supported.</p>
+<h2>Noncompliant Code Example</h2>
+<pre>
+a {
+ width: 10pixels;
+}
+</pre>
+<h2>Compliant Solution</h2>
+<pre>
+a {
+ width: 10px;
+}
+</pre>
+<h2>See</h2>
+<ul>
+ <li> https://www.w3.org/TR/css3-values/#lengths </li>
+</ul>
+
diff --git a/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.json b/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.json
new file mode 100644
index 0000000..b6ee0e2
--- /dev/null
+++ b/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/S4653.json
@@ -0,0 +1,16 @@
+{
+ "title": "Units should be valid",
+ "type": "BUG",
+ "status": "ready",
+ "remediation": {
+ "func": "Constant\/Issue",
+ "constantCost": "5min"
+ },
+ "tags": [
+
+ ],
+ "defaultSeverity": "Blocker",
+ "ruleSpecification": "RSPEC-4653",
+ "sqKey": "S4653",
+ "scope": "Main"
+}
diff --git a/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/Sonar_way_profile.json b/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/Sonar_way_profile.json
index ba5ce46..a0e81bb 100644
--- a/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/Sonar_way_profile.json
+++ b/sonar-css-plugin/src/main/resources/org/sonar/l10n/css/rules/css/Sonar_way_profile.json
@@ -1,6 +1,7 @@
{
"name": "Sonar way",
"ruleKeys": [
- "S4647"
+ "S4647",
+ "S4653"
]
}
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssLanguageTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssLanguageTest.java
index cf5c65a..8ebbbc0 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssLanguageTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssLanguageTest.java
@@ -27,7 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat;
public class CssLanguageTest {
@Test
- public void test() throws Exception {
+ public void test() {
MapSettings settings = new MapSettings();
settings.setProperty(CssPlugin.FILE_SUFFIXES_KEY, CssPlugin.FILE_SUFFIXES_DEFVALUE);
CssLanguage language = new CssLanguage(settings.asConfig());
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java
index 5c9e5ae..d176688 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java
@@ -49,7 +49,7 @@ public class CssRuleSensorTest {
public TemporaryFolder tmpDir = new TemporaryFolder();
@Test
- public void test_descriptor() throws Exception {
+ public void test_descriptor() {
CssRuleSensor sensor = new CssRuleSensor(new CssBundleHandler(), checkFactory, new StylelintCommandProvider());
DefaultSensorDescriptor sensorDescriptor = new DefaultSensorDescriptor();
sensor.describe(sensorDescriptor);
@@ -59,7 +59,7 @@ public class CssRuleSensorTest {
}
@Test
- public void test_execute() throws Exception {
+ public void test_execute() throws IOException {
SensorContextTester context = SensorContextTester.create(BASE_DIR);
context.fileSystem().setWorkDir(tmpDir.getRoot().toPath());
DefaultInputFile inputFile = createInputFile(context, "some css content\n on 2 lines", "dir/file.css");
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/SonarWayProfileTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/SonarWayProfileTest.java
index eba68f5..a726858 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/SonarWayProfileTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/SonarWayProfileTest.java
@@ -38,7 +38,7 @@ public class SonarWayProfileTest {
assertThat(profile.language()).isEqualTo(CssLanguage.KEY);
assertThat(profile.name()).isEqualTo(SonarWayProfile.PROFILE_NAME);
assertThat(profile.rules()).extracting("repoKey").containsOnly(CssRulesDefinition.REPOSITORY_KEY);
- assertThat(profile.rules()).extracting("ruleKey").contains("S4647");
+ assertThat(profile.rules()).extracting("ruleKey").hasSize(CssRules.getRuleClasses().size());
}
}
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/TokenizerTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/TokenizerTest.java
index 76c4617..a0cf508 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/TokenizerTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/TokenizerTest.java
@@ -22,6 +22,8 @@ package org.sonar.css.plugin;
import java.util.List;
import org.junit.Test;
+import java.util.List;
+
import static org.assertj.core.api.Assertions.assertThat;
public class TokenizerTest {
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/bundle/CssBundleHandlerTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/bundle/CssBundleHandlerTest.java
index b55d050..fe56c89 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/bundle/CssBundleHandlerTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/bundle/CssBundleHandlerTest.java
@@ -44,7 +44,7 @@ public class CssBundleHandlerTest {
}
@Test
- public void test() throws Exception {
+ public void test() {
CssBundleHandler bundleHandler = new CssBundleHandler();
bundleHandler.bundleLocation = "/bundle/test-bundle.zip";
bundleHandler.deployBundle(DEPLOY_DESTINATION);