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 | |
| parent | 5e1b4ef423a1ca5943232ad332d3230d9d09ec82 (diff) | |
| download | sonar-css-fd0139f0673ceaeabab4db3112cf18fff69f3c81.tar.bz2 | |
Support stylelint report in different encoding (#176)
Diffstat (limited to 'sonar-css-plugin/src/main')
| -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) { |
