I’ve run into an issue with the SonarCloud ESLint integration while setting up SonarCloud CI analysis with GitHub workflows.
I’m getting this error when SonarCloud attempts to parse the .eslintcache
file:
20:41:12.815 INFO Importing /github/workspace/.eslintcache
20:41:12.856 WARN No issues information will be saved as the report file can't be read.
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 100930 path $[531].messages
The complete stack trace
20:41:12.815 INFO Importing /github/workspace/.eslintcache
20:41:12.856 WARN No issues information will be saved as the report file can't be read.
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 100930 path $[531].messages
See https://github.com/google/gson/blob/main/Troubleshooting.md#unexpected-json-structure
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:520)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:76)
at com.google.gson.Gson.fromJson(Gson.java:1361)
at com.google.gson.Gson.fromJson(Gson.java:1262)
at com.google.gson.Gson.fromJson(Gson.java:1199)
at org.sonar.plugins.javascript.external.EslintReportSensor.importReport(EslintReportSensor.java:67)
at org.sonar.plugins.javascript.external.AbstractExternalIssuesSensor.lambda$execute$1(AbstractExternalIssuesSensor.java:55)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at org.sonar.plugins.javascript.external.AbstractExternalIssuesSensor.execute(AbstractExternalIssuesSensor.java:55)
at org.sonar.plugins.javascript.external.EslintReportSensor.execute(EslintReportSensor.java:43)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:63)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:192)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:188)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:159)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.scanner.bootstrap.ScannerContainer.doAfterStart(ScannerContainer.java:416)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:128)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.scanner.bootstrap.ScannerMain.runScannerEngine(ScannerMain.java:135)
at org.sonar.scanner.bootstrap.ScannerMain.run(ScannerMain.java:52)
at org.sonar.scanner.bootstrap.ScannerMain.main(ScannerMain.java:38)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 100930 path $[531].messages
See https://github.com/google/gson/blob/main/Troubleshooting.md#unexpected-json-structure
at com.google.gson.stream.JsonReader.unexpectedTokenError(JsonReader.java:1768)
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:430)
at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:74)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:267)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:558)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:516)
... 32 common frames omitted
The complete .eslintcache
file
Based on the error message, it looks like it’s having an issue with this line:
...
"Unsafe argument of type `any` assigned to a parameter of type `DocumentNode | TypedDocumentNode<{ updateTask: { task: TaskType; errors: [{ messages: string[]; }]; }; }, OperationVariables>`.",
...
(This is the 531st instance of messages
, which I believe matches path $[531].messages
from the error. It is also the last instance of messages
in the JSON.)
According to https://jsonlint.com/, the JSON is valid. Does anyone have an idea of what might be going wrong here, and how I might fix it?