aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-css-plugin/src
diff options
context:
space:
mode:
authorElena Vilchik2018-06-12 13:34:33 +0200
committerGitHub2018-06-12 13:34:33 +0200
commitfb56fdc0dc18d277ccfae2cdb948e9da367377ea (patch)
treeabf9f112d0249d97bac25123f30bdb6188164401 /sonar-css-plugin/src
parent6cebcca87c5d276627fe22b9c53ddeb4844894b6 (diff)
downloadsonar-css-fb56fdc0dc18d277ccfae2cdb948e9da367377ea.tar.bz2
Create CSS language and set up trivial ITs (#39)
Diffstat (limited to 'sonar-css-plugin/src')
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssLanguage.java41
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssPlugin.java20
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/SonarWayProfile.java35
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/package-info.java21
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssPluginTest.java42
5 files changed, 159 insertions, 0 deletions
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssLanguage.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssLanguage.java
new file mode 100644
index 0000000..be5e431
--- /dev/null
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssLanguage.java
@@ -0,0 +1,41 @@
+/*
+ * 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;
+
+import org.sonar.api.config.Configuration;
+import org.sonar.api.resources.AbstractLanguage;
+
+public class CssLanguage extends AbstractLanguage {
+
+ public static final String KEY = "css";
+
+ private Configuration configuration;
+
+ public CssLanguage(Configuration configuration) {
+ super(KEY, "CSS");
+ this.configuration = configuration;
+ }
+
+ @Override
+ public String[] getFileSuffixes() {
+ return configuration.getStringArray(CssPlugin.FILE_SUFFIXES_KEY);
+ }
+
+}
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssPlugin.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssPlugin.java
index 8d2a12b..07b4feb 100644
--- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssPlugin.java
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssPlugin.java
@@ -20,12 +20,32 @@
package org.sonar.css.plugin;
import org.sonar.api.Plugin;
+import org.sonar.api.config.PropertyDefinition;
+import org.sonar.api.resources.Qualifiers;
public class CssPlugin implements Plugin {
+ static final String FILE_SUFFIXES_KEY = "sonar.css.file.suffixes";
+ public static final String FILE_SUFFIXES_DEFVALUE = ".css,.less,.scss";
+
+ private static final String CSS_CATEGORY = "CSS";
+ private static final String GENERAL_SUBCATEGORY = "General";
@Override
public void define(Context context) {
+ context.addExtensions(
+ CssLanguage.class,
+ SonarWayProfile.class,
+ PropertyDefinition.builder(FILE_SUFFIXES_KEY)
+ .defaultValue(FILE_SUFFIXES_DEFVALUE)
+ .name("File Suffixes")
+ .description("List of suffixes for files to analyze.")
+ .subCategory(GENERAL_SUBCATEGORY)
+ .category(CSS_CATEGORY)
+ .onQualifiers(Qualifiers.PROJECT)
+ .multiValues(true)
+ .build()
+ );
}
}
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/SonarWayProfile.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/SonarWayProfile.java
new file mode 100644
index 0000000..a54de22
--- /dev/null
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/SonarWayProfile.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition;
+
+public class SonarWayProfile implements BuiltInQualityProfilesDefinition {
+
+ public static final String PROFILE_NAME = "Sonar way";
+// private static final String PROFILE_PATH = "org/sonar/l10n/css/rules/css/Sonar_way_profile.json";
+
+ @Override
+ public void define(Context context) {
+
+ NewBuiltInQualityProfile profile = context.createBuiltInQualityProfile(PROFILE_NAME, CssLanguage.KEY);
+ profile.done();
+ }
+}
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/package-info.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/package-info.java
new file mode 100644
index 0000000..a7efac0
--- /dev/null
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+@javax.annotation.ParametersAreNonnullByDefault
+package org.sonar.css.plugin;
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssPluginTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssPluginTest.java
new file mode 100644
index 0000000..3da86ca
--- /dev/null
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssPluginTest.java
@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import org.junit.Test;
+import org.sonar.api.Plugin;
+import org.sonar.api.SonarQubeSide;
+import org.sonar.api.SonarRuntime;
+import org.sonar.api.internal.SonarRuntimeImpl;
+import org.sonar.api.utils.Version;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+
+public class CssPluginTest {
+
+ @Test
+ public void count_extensions() throws Exception {
+ SonarRuntime runtime = SonarRuntimeImpl.forSonarQube(Version.create(6, 7), SonarQubeSide.SCANNER);
+ Plugin.Context context = new Plugin.Context(runtime);
+ Plugin underTest = new CssPlugin();
+ underTest.define(context);
+ assertThat(context.getExtensions()).hasSize(3);
+ }
+}