ESLint multiple files are not working ( File not found )

  • Which versions are you using
    • SonarQube™ 8.9.3
    • Scanner 5.2.0
    • JavaScript/TypeScript Code Quality and Security 8.5.0.16762 (javascript)
    • SonarTS 2.1.0.4359 (typescript)
    • Much more but not relevant I think :slight_smile:
  • What are you trying to achieve
    I want to add mulitple ESLint files for analysis.
  • What have you tried so far to achieve this
    I tried different formats.

The documentation says:
https://docs.sonarqube.org/latest/analysis/external-issues/

sonar.eslint.reportPaths: Comma-delimited list of paths to JSON ESLint reports (use -f json ESLint option)

The problem is that all of this things are not working:

  • **/eslint.json
  • eslint.json,a/eslint.json,b/eslint.json
INFO: Sensor Import of ESLint issues [javascript]
INFO: Importing /home/eslint.json,/home/a/eslint.json,/home/b/eslint.json
##[error]ERROR: No issues information will be saved as the report file can't be read.
java.io.FileNotFoundException: /home/eslint.json,/home/a/eslint.json,/home/b/eslint.json (No such file or directory)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
	at org.sonar.plugins.javascript.external.EslintReportSensor.importReport(EslintReportSensor.java:61)
	at org.sonar.plugins.javascript.external.AbstractExternalIssuesSensor.lambda$execute$1(AbstractExternalIssuesSensor.java:54)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.sonar.plugins.javascript.external.AbstractExternalIssuesSensor.execute(AbstractExternalIssuesSensor.java:54)
	at org.sonar.plugins.javascript.external.EslintReportSensor.execute(EslintReportSensor.java:43)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:392)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:388)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:357)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:150)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
	at org.sonarsource.scanner.cli.Main.main(Main.java:61)

Hi,

I wouldn’t expect **/eslint.json to work; the docs don’t indicate that wildcards are supported for that property. However I would expect your comma-delimited list of paths to work.

One thing that strikes me is the difference between what you say you’ve tried

versus what shows up in the error message (emphasis mine):

First, it looks like your list is being interpreted as a single file path and second, where did all those /home/s come from?

It seems that perhaps there’s some interpolation between when you set the comma-delimited list and when it reaches analysis…? And somehow that interpolation is changing your commas into curly commas…??? Or… something? (If that sounds crazy to you, it sounds a bit crazy to me too, but I’m exploring ideas here.)

How are you setting this parameter value?

 
Ann