aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-css-plugin
diff options
context:
space:
mode:
authorElena Vilchik2018-06-21 11:13:19 +0200
committerAmaury Levé2018-06-21 11:13:19 +0200
commit6472431ad488158bfcf863a7b4a5655e1ecc55e8 (patch)
tree34181ef96511a8eb6b09dead1f14e819e19b769a /sonar-css-plugin
parentc6053785e5f8f01a544cb106afd9109a6ba7d7a1 (diff)
downloadsonar-css-6472431ad488158bfcf863a7b4a5655e1ecc55e8.tar.bz2
Generate rules configuration file (#56)
Diffstat (limited to 'sonar-css-plugin')
-rw-r--r--sonar-css-plugin/css-bundle/stylelintconfig.json5
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssPlugin.java2
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRuleSensor.java13
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/CssRules.java2
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/LinterCommandProvider.java1
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintCommandProvider.java (renamed from sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintExecution.java)11
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/BundleHandler.java (renamed from sonar-css-plugin/src/main/java/org/sonar/css/plugin/BundleHandler.java)2
-rw-r--r--sonar-css-plugin/src/main/java/org/sonar/css/plugin/bundle/CssBundleHandler.java1
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java14
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintCommandProviderTest.java (renamed from sonar-css-plugin/src/test/java/org/sonar/css/plugin/StylelintExecutionTest.java)6
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(),