diff options
Diffstat (limited to 'sonar-css-plugin/src/main/java')
3 files changed, 19 insertions, 8 deletions
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java index eda2b5d..0601839 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java @@ -20,6 +20,7 @@ package org.sonar.css.plugin; import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; @@ -63,10 +64,9 @@ public class CssRuleSensor implements Sensor { File deployDestination = context.fileSystem().workDir(); bundleHandler.deployBundle(deployDestination); - File projectBaseDir = context.fileSystem().baseDir(); - - String[] commandParts = linterCommandProvider.commandParts(deployDestination, projectBaseDir); + String[] commandParts = linterCommandProvider.commandParts(deployDestination, context); ProcessBuilder processBuilder = new ProcessBuilder(commandParts); + String command = String.join(" ", commandParts); try { createConfig(deployDestination); @@ -78,8 +78,10 @@ public class CssRuleSensor implements Sensor { } } catch (IOException e) { - String command = String.join(" ", commandParts); - throw new IllegalStateException(String.format("Failed to run external process '%s'. Re-run analysis with debug option for more information.", command), e); + throw new IllegalStateException(String.format("Failed to run external process '%s'", command), e); + + } catch (JsonSyntaxException e) { + throw new IllegalStateException(String.format("Failed to parse json result of external process execution '%s'. To diagnose, try to run it manually.", command), e); } } diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/LinterCommandProvider.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/LinterCommandProvider.java index 142762c..3ca334a 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/LinterCommandProvider.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/LinterCommandProvider.java @@ -20,10 +20,11 @@ package org.sonar.css.plugin; import java.io.File; +import org.sonar.api.batch.sensor.SensorContext; public interface LinterCommandProvider { - String[] commandParts(File deployDestination, File projectBaseDir); + String[] commandParts(File deployDestination, SensorContext context); String configPath(File deployDestination); } 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 fe05ad6..d97293d 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,7 +20,9 @@ package org.sonar.css.plugin; import java.io.File; +import java.nio.file.Paths; import org.sonar.api.batch.ScannerSide; +import org.sonar.api.batch.sensor.SensorContext; @ScannerSide public class StylelintCommandProvider implements LinterCommandProvider { @@ -28,11 +30,17 @@ public class StylelintCommandProvider implements LinterCommandProvider { private static final String CONFIG_PATH = "css-bundle/stylelintconfig.json"; @Override - public String[] commandParts(File deployDestination, File projectBaseDir) { + public String[] commandParts(File deployDestination, SensorContext context) { + String projectBaseDir = context.fileSystem().baseDir().getAbsolutePath(); + String[] suffixes = context.config().getStringArray(CssPlugin.FILE_SUFFIXES_KEY); + String filesGlob = "**" + File.separator + "*{" + String.join(",", suffixes) + "}"; + String filesToAnalyze = Paths.get(projectBaseDir, "TOREPLACE").toString(); + filesToAnalyze = filesToAnalyze.replace("TOREPLACE", filesGlob); + return new String[]{ "node", new File(deployDestination, "css-bundle/node_modules/stylelint/bin/stylelint").getAbsolutePath(), - projectBaseDir.getAbsolutePath(), + filesToAnalyze, "--config", new File(deployDestination, CONFIG_PATH).getAbsolutePath(), "-f", "json" }; |
