diff options
| author | Elena Vilchik | 2019-06-12 11:53:55 +0200 | 
|---|---|---|
| committer | Tibor Blenessy | 2019-06-12 11:53:55 +0200 | 
| commit | fd0139f0673ceaeabab4db3112cf18fff69f3c81 (patch) | |
| tree | d1faf835fabcf185e6c56442d40d8c288aa526b8 /sonar-css-plugin/src/main/java/org/sonar | |
| parent | 5e1b4ef423a1ca5943232ad332d3230d9d09ec82 (diff) | |
| download | sonar-css-fd0139f0673ceaeabab4db3112cf18fff69f3c81.tar.bz2 | |
Support stylelint report in different encoding (#176)
Diffstat (limited to 'sonar-css-plugin/src/main/java/org/sonar')
| -rw-r--r-- | sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintReportSensor.java | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintReportSensor.java b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintReportSensor.java index 106f9a3..c694d9d 100644 --- a/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintReportSensor.java +++ b/sonar-css-plugin/src/main/java/org/sonar/css/plugin/StylelintReportSensor.java @@ -22,12 +22,14 @@ package org.sonar.css.plugin;  import com.google.gson.Gson;  import com.google.gson.JsonSyntaxException;  import java.io.File; -import java.io.FileInputStream;  import java.io.IOException;  import java.io.InputStreamReader;  import java.nio.charset.StandardCharsets; +import java.nio.file.Files;  import java.util.List;  import javax.annotation.Nullable; +import org.apache.commons.io.ByteOrderMark; +import org.apache.commons.io.input.BOMInputStream;  import org.sonar.api.batch.fs.FilePredicates;  import org.sonar.api.batch.fs.InputFile;  import org.sonar.api.batch.rule.CheckFactory; @@ -50,9 +52,9 @@ public class StylelintReportSensor implements Sensor {    public static final String STYLELINT = "stylelint"; -    private static final Logger LOG = Loggers.get(StylelintReportSensor.class);    private static final String FILE_EXCEPTION_MESSAGE = "No issues information will be saved as the report file can't be read."; +  private static final ByteOrderMark[] BYTE_ORDER_MARKS = {ByteOrderMark.UTF_8, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE};    private final CssRules cssRules;    private ExternalRuleLoader stylelintRuleLoader = getStylelintRuleLoader(); @@ -78,8 +80,13 @@ public class StylelintReportSensor implements Sensor {    private void importReport(File report, SensorContext context) {      LOG.info("Importing {}", report.getAbsoluteFile()); -    try (InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(report), StandardCharsets.UTF_8)) { -      IssuesPerFile[] issues = new Gson().fromJson(inputStreamReader, IssuesPerFile[].class); +    try (BOMInputStream bomInputStream = new BOMInputStream(Files.newInputStream(report.toPath()), BYTE_ORDER_MARKS)) { +      String charsetName = bomInputStream.getBOMCharsetName(); +      if (charsetName == null) { +        charsetName = StandardCharsets.UTF_8.name(); +      } + +      IssuesPerFile[] issues = new Gson().fromJson(new InputStreamReader(bomInputStream, charsetName), IssuesPerFile[].class);        for (IssuesPerFile issuesPerFile : issues) {          InputFile inputFile = getInputFile(context, issuesPerFile.source);          if (inputFile != null) {  | 
