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) --- .../java/org/sonar/css/plugin/StylelintCommandProvider.java | 13 +++++++++++-- .../org/sonar/css/plugin/StylelintCommandProviderTest.java | 6 ++++-- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'sonar-css-plugin/src') 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