From eb017c3b5e0b4652210fb7bcd0a68fe0c36b29cf Mon Sep 17 00:00:00 2001
From: Elena Vilchik
Date: Fri, 14 Jun 2019 10:01:23 +0200
Subject: Analyse CSS inside other language files (html, vue) (#183)
---
its/plugin/projects/issues-project/src/file5-1.html | 14 ++++++++++++++
its/plugin/projects/issues-project/src/file5.htm | 13 +++++++++++++
its/plugin/projects/issues-project/src/file6.vue | 12 ++++++++++++
its/plugin/src/test/java/org/sonar/css/its/IssuesTest.java | 6 +++++-
.../src/test/java/org/sonar/css/its/MetricsTest.java | 4 ++--
its/plugin/src/test/java/org/sonar/css/its/Tests.java | 4 ++++
.../org/sonar/css/plugin/StylelintCommandProvider.java | 13 +++++++++++--
.../org/sonar/css/plugin/StylelintCommandProviderTest.java | 6 ++++--
8 files changed, 65 insertions(+), 7 deletions(-)
create mode 100644 its/plugin/projects/issues-project/src/file5-1.html
create mode 100644 its/plugin/projects/issues-project/src/file5.htm
create mode 100644 its/plugin/projects/issues-project/src/file6.vue
diff --git a/its/plugin/projects/issues-project/src/file5-1.html b/its/plugin/projects/issues-project/src/file5-1.html
new file mode 100644
index 0000000..908013f
--- /dev/null
+++ b/its/plugin/projects/issues-project/src/file5-1.html
@@ -0,0 +1,14 @@
+
+
+
+
+ Page Title
+
+
+
+
+
diff --git a/its/plugin/projects/issues-project/src/file5.htm b/its/plugin/projects/issues-project/src/file5.htm
new file mode 100644
index 0000000..8cb86d7
--- /dev/null
+++ b/its/plugin/projects/issues-project/src/file5.htm
@@ -0,0 +1,13 @@
+
+
+
+ Page Title
+
+
+
+
+
diff --git a/its/plugin/projects/issues-project/src/file6.vue b/its/plugin/projects/issues-project/src/file6.vue
new file mode 100644
index 0000000..ba35736
--- /dev/null
+++ b/its/plugin/projects/issues-project/src/file6.vue
@@ -0,0 +1,12 @@
+
+
+ hello
+
+
+
diff --git a/its/plugin/src/test/java/org/sonar/css/its/IssuesTest.java b/its/plugin/src/test/java/org/sonar/css/its/IssuesTest.java
index ce57e15..c65df09 100644
--- a/its/plugin/src/test/java/org/sonar/css/its/IssuesTest.java
+++ b/its/plugin/src/test/java/org/sonar/css/its/IssuesTest.java
@@ -20,6 +20,7 @@
package org.sonar.css.its;
import com.sonar.orchestrator.Orchestrator;
+import com.sonar.orchestrator.build.SonarScanner;
import com.sonar.orchestrator.locator.FileLocation;
import java.io.File;
import java.util.Collections;
@@ -50,7 +51,9 @@ public class IssuesTest {
orchestrator.getServer().provisionProject(PROJECT_KEY, PROJECT_KEY);
orchestrator.getServer().associateProjectToQualityProfile(PROJECT_KEY, "css", "rules");
- orchestrator.executeBuild(Tests.createScanner(PROJECT_KEY));
+ SonarScanner scanner = Tests.createScanner(PROJECT_KEY);
+ scanner.setProperty("sonar.html.file.suffixes", ".htm");
+ orchestrator.executeBuild(scanner);
}
@Test
@@ -61,6 +64,7 @@ public class IssuesTest {
assertThat(issuesList).extracting("rule").hasSize(
CssRules.getRuleClasses().size() * 3 /* issues are raised against .css, .less and .scss */
+ + 2 /* for html and vue files */
+ 1 /* issue S4654 is raised for comment */
+ 1 /* issue S4662 is raised for cssModules.css */
+ 6 /* S5362 raises at the same place as S4650 */
diff --git a/its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java b/its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java
index 275da9d..af4a153 100644
--- a/its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java
+++ b/its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java
@@ -42,8 +42,8 @@ public class MetricsTest {
@Test
public void test() {
- assertThat(getProjectMeasureAsDouble("lines", PROJECT_KEY)).isEqualTo(32);
- assertThat(getProjectMeasureAsDouble("ncloc", PROJECT_KEY)).isEqualTo(22);
+ assertThat(getProjectMeasureAsDouble("lines", PROJECT_KEY)).isEqualTo(43);
+ assertThat(getProjectMeasureAsDouble("ncloc", PROJECT_KEY)).isEqualTo(32);
assertThat(getProjectMeasureAsDouble("comment_lines", PROJECT_KEY)).isEqualTo(4);
assertThat(getMeasure("ncloc_data", PROJECT_KEY + ":src/file1.css").getValue())
diff --git a/its/plugin/src/test/java/org/sonar/css/its/Tests.java b/its/plugin/src/test/java/org/sonar/css/its/Tests.java
index 5098022..e07dd76 100644
--- a/its/plugin/src/test/java/org/sonar/css/its/Tests.java
+++ b/its/plugin/src/test/java/org/sonar/css/its/Tests.java
@@ -23,6 +23,7 @@ import com.sonar.orchestrator.Orchestrator;
import com.sonar.orchestrator.OrchestratorBuilder;
import com.sonar.orchestrator.build.SonarScanner;
import com.sonar.orchestrator.locator.FileLocation;
+import com.sonar.orchestrator.locator.MavenLocation;
import java.io.File;
import java.util.Collections;
import java.util.List;
@@ -48,12 +49,15 @@ public class Tests {
private static final FileLocation PLUGIN_LOCATION = FileLocation.byWildcardMavenFilename(
new File("../../sonar-css-plugin/target"), "sonar-css-plugin-*.jar");
+
@ClassRule
public static final Orchestrator ORCHESTRATOR;
static {
OrchestratorBuilder orchestratorBuilder = Orchestrator.builderEnv()
.addPlugin(PLUGIN_LOCATION)
+ .addPlugin(MavenLocation.of("org.sonarsource.html", "sonar-html-plugin", "DEV"))
+ .addPlugin(MavenLocation.of("org.sonarsource.javascript", "sonar-javascript-plugin", "DEV"))
.setSonarVersion(System.getProperty("sonar.runtimeVersion", "LATEST_RELEASE"));
ORCHESTRATOR = orchestratorBuilder.build();
}
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintCommandProvider.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintCommandProvider.java
index 26541bd..1f6d6b2 100644
--- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintCommandProvider.java
+++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintCommandProvider.java
@@ -20,8 +20,11 @@
package org.sonar.css.plugin;
import java.io.File;
-import java.nio.file.Paths;
+import java.nio.file.Paths;import java.util.Arrays;
+import java.util.List;
import java.util.function.Consumer;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.sonar.api.batch.ScannerSide;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonarsource.nodejs.NodeCommand;
@@ -30,11 +33,17 @@ import org.sonarsource.nodejs.NodeCommand;
public class StylelintCommandProvider implements LinterCommandProvider {
private static final String CONFIG_PATH = "css-bundle/stylelintconfig.json";
+ private static final List LANGUAGES_TO_ANALYZE = Arrays.asList("css", "html", "php", "javascript", "typescript");
@Override
public NodeCommand nodeCommand(File deployDestination, SensorContext context, Consumer output, Consumer error) {
String projectBaseDir = context.fileSystem().baseDir().getAbsolutePath();
- String[] suffixes = context.config().getStringArray(CssPlugin.FILE_SUFFIXES_KEY);
+
+ List suffixes = LANGUAGES_TO_ANALYZE.stream()
+ .map(language -> context.config().getStringArray("sonar." + language + ".file.suffixes"))
+ .flatMap(Stream::of)
+ .collect(Collectors.toList());
+
String filesGlob = "**" + File.separator + "*{" + String.join(",", suffixes) + "}";
String filesToAnalyze = Paths.get(projectBaseDir, "TOREPLACE").toString();
filesToAnalyze = filesToAnalyze.replace("TOREPLACE", filesGlob);
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintCommandProviderTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintCommandProviderTest.java
index 9251fe0..da0eb93 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintCommandProviderTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintCommandProviderTest.java
@@ -44,13 +44,15 @@ public class StylelintCommandProviderTest {
File deployDestination = new File("deploy_destination");
File baseDir = new File("src/test/resources").getAbsoluteFile();
SensorContextTester context = SensorContextTester.create(baseDir);
- context.settings().setProperty(CssPlugin.FILE_SUFFIXES_KEY, ".foo,.bar");
+ context.settings().setProperty(CssPlugin.FILE_SUFFIXES_KEY, ".foo,.bar")
+ .setProperty("sonar.javascript.file.suffixes", ".js")
+ .setProperty("sonar.java.file.suffixes", ".java");
Consumer noop = a -> {};
NodeCommand nodeCommand = stylelintCommandProvider.nodeCommand(deployDestination, context, noop, noop);
assertThat(nodeCommand.toString()).endsWith(
String.join(" ",
new File(deployDestination, "css-bundle/node_modules/stylelint/bin/stylelint").getAbsolutePath(),
- baseDir.getAbsolutePath() + File.separator + "**" + File.separator + "*{.foo,.bar}",
+ baseDir.getAbsolutePath() + File.separator + "**" + File.separator + "*{.foo,.bar,.js}",
"--config",
new File(deployDestination, "css-bundle/stylelintconfig.json").getAbsolutePath(),
"-f",
--
cgit v1.2.3