diff options
Diffstat (limited to 'sonar-css-plugin')
10 files changed, 42 insertions, 15 deletions
diff --git a/sonar-css-plugin/css-bundle/stylelintconfig.json b/sonar-css-plugin/css-bundle/stylelintconfig.json deleted file mode 100644 index e3b05ce..0000000 --- a/sonar-css-plugin/css-bundle/stylelintconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rules": { - "color-no-invalid-hex": true - } -} 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 2835edb..b4f78f7 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 @@ -41,7 +41,7 @@ public class CssPlugin implements Plugin { CssRulesDefinition.class, CssBundleHandler.class, CssRuleSensor.class, - StylelintExecution.class, + StylelintCommandProvider.class, PropertyDefinition.builder(FILE_SUFFIXES_KEY) .defaultValue(FILE_SUFFIXES_DEFVALUE) 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 8b6558b..eda2b5d 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 @@ -24,6 +24,9 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Collections; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.rule.CheckFactory; @@ -32,6 +35,8 @@ import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.batch.sensor.issue.NewIssue; import org.sonar.api.batch.sensor.issue.NewIssueLocation; +import org.sonar.css.plugin.CssRules.StylelintConfig; +import org.sonar.css.plugin.bundle.BundleHandler; public class CssRuleSensor implements Sensor { @@ -64,6 +69,7 @@ public class CssRuleSensor implements Sensor { ProcessBuilder processBuilder = new ProcessBuilder(commandParts); try { + createConfig(deployDestination); Process process = processBuilder.start(); try (InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8)) { @@ -77,6 +83,13 @@ public class CssRuleSensor implements Sensor { } } + private void createConfig(File deployDestination) throws IOException { + String configPath = linterCommandProvider.configPath(deployDestination); + StylelintConfig config = cssRules.getConfig(); + String configAsJson = new Gson().toJson(config); + Files.write(Paths.get(configPath), Collections.singletonList(configAsJson), StandardCharsets.UTF_8); + } + private static void saveIssues(SensorContext context, CssRules cssRules, IssuesPerFile[] issues) { FileSystem fileSystem = context.fileSystem(); 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 4ece37e..4fdf3f5 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 @@ -28,8 +28,8 @@ 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.CssRule; import org.sonar.css.plugin.rules.ColorNoInvalidHex; +import org.sonar.css.plugin.rules.CssRule; public class CssRules { 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 6f06c84..142762c 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 @@ -25,4 +25,5 @@ public interface LinterCommandProvider { String[] commandParts(File deployDestination, File projectBaseDir); + String configPath(File deployDestination); } diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintExecution.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintCommandProvider.java index c88a0ac..fe05ad6 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintExecution.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintCommandProvider.java @@ -23,7 +23,9 @@ import java.io.File; import org.sonar.api.batch.ScannerSide; @ScannerSide -public class StylelintExecution implements LinterCommandProvider { +public class StylelintCommandProvider implements LinterCommandProvider { + + private static final String CONFIG_PATH = "css-bundle/stylelintconfig.json"; @Override public String[] commandParts(File deployDestination, File projectBaseDir) { @@ -31,8 +33,13 @@ public class StylelintExecution implements LinterCommandProvider { "node", new File(deployDestination, "css-bundle/node_modules/stylelint/bin/stylelint").getAbsolutePath(), projectBaseDir.getAbsolutePath(), - "--config", new File(deployDestination, "css-bundle/stylelintconfig.json").getAbsolutePath(), + "--config", new File(deployDestination, CONFIG_PATH).getAbsolutePath(), "-f", "json" }; } + + @Override + public String configPath(File deployDestination) { + return new File(deployDestination, CONFIG_PATH).getAbsolutePath(); + } } diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/BundleHandler.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/BundleHandler.java index 79a7d5b..5b9fa35 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/BundleHandler.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/BundleHandler.java @@ -17,7 +17,7 @@ * 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; +package org.sonar.css.plugin.bundle; import java.io.File; diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/CssBundleHandler.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/CssBundleHandler.java index acf9245..3140094 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/CssBundleHandler.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/CssBundleHandler.java @@ -24,7 +24,6 @@ import java.io.InputStream; import org.sonar.api.batch.ScannerSide; import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; -import org.sonar.css.plugin.BundleHandler; import org.sonar.css.plugin.Zip; @ScannerSide 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 a4d5921..5c9e5ae 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 @@ -23,6 +23,9 @@ import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -32,6 +35,7 @@ import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.rule.CheckFactory; import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor; import org.sonar.api.batch.sensor.internal.SensorContextTester; +import org.sonar.css.plugin.bundle.BundleHandler; import org.sonar.css.plugin.bundle.CssBundleHandler; import static org.assertj.core.api.Assertions.assertThat; @@ -46,7 +50,7 @@ public class CssRuleSensorTest { @Test public void test_descriptor() throws Exception { - CssRuleSensor sensor = new CssRuleSensor(new CssBundleHandler(), checkFactory, new StylelintExecution()); + CssRuleSensor sensor = new CssRuleSensor(new CssBundleHandler(), checkFactory, new StylelintCommandProvider()); DefaultSensorDescriptor sensorDescriptor = new DefaultSensorDescriptor(); sensor.describe(sensorDescriptor); assertThat(sensorDescriptor.name()).isEqualTo("SonarCSS Rules"); @@ -64,6 +68,9 @@ public class CssRuleSensorTest { sensor.execute(context); assertThat(context.allIssues()).hasSize(1); + + Path configPath = Paths.get(context.fileSystem().workDir().getAbsolutePath(), "testconfig.json"); + assertThat(Files.readAllLines(configPath)).containsOnly("{\"rules\":{\"color-no-invalid-hex\":true}}"); } private static DefaultInputFile createInputFile(SensorContextTester sensorContext, String content, String relativePath) { @@ -113,6 +120,11 @@ public class CssRuleSensorTest { public String[] commandParts(File deployDestination, File projectBaseDir) { return elements; } + + @Override + public String configPath(File deployDestination) { + return new File(deployDestination, "testconfig.json").getAbsolutePath(); + } } private static class TestBundleHandler implements BundleHandler { diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintExecutionTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintCommandProviderTest.java index 4ca78db..d201258 100644 --- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintExecutionTest.java +++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintCommandProviderTest.java @@ -24,14 +24,14 @@ import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; -public class StylelintExecutionTest { +public class StylelintCommandProviderTest { @Test public void test() throws Exception { - StylelintExecution stylelintExecution = new StylelintExecution(); + StylelintCommandProvider stylelintCommandProvider = new StylelintCommandProvider(); File deployDestination = new File("deploy_destination"); File baseDir = new File("base_dir"); - assertThat(stylelintExecution.commandParts(deployDestination, baseDir)).containsExactly( + assertThat(stylelintCommandProvider.commandParts(deployDestination, baseDir)).containsExactly( "node", new File(deployDestination, "css-bundle/node_modules/stylelint/bin/stylelint").getAbsolutePath(), baseDir.getAbsolutePath(), |
