diff options
| author | Elena Vilchik | 2018-06-21 11:13:19 +0200 | 
|---|---|---|
| committer | Amaury Levé | 2018-06-21 11:13:19 +0200 | 
| commit | 6472431ad488158bfcf863a7b4a5655e1ecc55e8 (patch) | |
| tree | 34181ef96511a8eb6b09dead1f14e819e19b769a /sonar-css-plugin | |
| parent | c6053785e5f8f01a544cb106afd9109a6ba7d7a1 (diff) | |
| download | sonar-css-6472431ad488158bfcf863a7b4a5655e1ecc55e8.tar.bz2 | |
Generate rules configuration file (#56)
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(), | 
