Sonar 8.2 - wrong Typescript version found by Sonar

Must-share information (formatted with Markdown):

  • which versions are you using (SonarQube, Scanner, Plugin, and any relevant extension)
    Sonar 8.2 Developer edition, My code is Typescript 3.9.7 (Angular 10)

  • what are you trying to achieve
    get my typescript code correctly analyzed by Sonar

  • what have you tried so far to achieve this
    configure sonar scanner, specify tsconfig.sonar.json as recommended in a similar issue with tsconfig not being parsed correctly.

My issue s related to Typescript version, Sonar reports an old version (2.0.10) though my projects uses Typescript 3.9.7. The log seems to be reading Typescript rom the correct location (node_modules, don’t think such typescript exists in my node_modules…)

Here’s the log:

[INFO] Sensor SonarCSS Metrics [cssfamily]
[INFO] Sensor SonarCSS Metrics [cssfamily] (done) | time=76ms
[INFO] Sensor SonarCSS Rules [cssfamily]
[INFO] 148 source files to be analyzed
[INFO] 148/148 source files have been analyzed
[INFO] Sensor SonarCSS Rules [cssfamily] (done) | time=2161ms
[INFO] Sensor JavaXmlSensor [java]
[INFO] Sensor JavaXmlSensor [java] (done) | time=11ms
[INFO] Sensor HTML [web]
[INFO] Sensor HTML [web] (done) | time=344ms
[INFO] Sensor SonarTS [typescript]
[INFO] Since SonarTS v2.0, TypeScript analysis is performed by SonarJS analyzer v6.0 or later. No TypeScript analysis is performed by SonarTS.
[INFO] Sensor SonarTS [typescript] (done) | time=0ms
[INFO] Sensor JaCoCo XML Report Importer [jacoco]
[WARNING] Report doesn't exist: '/var/lib/jenkins/workspace/_sonar-needs-path-to-nodejs-BHEV6DKGVU5AXMFUFGX5XDM72BI7YVTSLCCRRLPQUQL6PIL75P3Q/refad-server-web-ui/target/jacoco.xml'
[INFO] Sensor JaCoCo XML Report Importer [jacoco] (done) | time=1ms
[INFO] Sensor SonarJS Coverage [javascript]
[INFO] Analysing [/var/lib/jenkins/workspace/_sonar-needs-path-to-nodejs-BHEV6DKGVU5AXMFUFGX5XDM72BI7YVTSLCCRRLPQUQL6PIL75P3Q/refad-server-web-ui/coverage/lcov.info]
[INFO] Sensor SonarJS Coverage [javascript] (done) | time=116ms
[INFO] Sensor TypeScript analysis [javascript]
[INFO] Using TypeScript at: '/var/lib/jenkins/workspace/_sonar-needs-path-to-nodejs-BHEV6DKGVU5AXMFUFGX5XDM72BI7YVTSLCCRRLPQUQL6PIL75P3Q/refad-server-web-ui/node_modules'
[INFO] Using /var/lib/jenkins/workspace/_sonar-needs-path-to-nodejs-BHEV6DKGVU5AXMFUFGX5XDM72BI7YVTSLCCRRLPQUQL6PIL75P3Q/refad-server-web-ui/tsconfig.sonar.json from sonar.typescript.tsconfigPath property
[INFO] 271 source files to be analyzed
[INFO] Analyzing 271 files using tsconfig: /var/lib/jenkins/workspace/_sonar-needs-path-to-nodejs-BHEV6DKGVU5AXMFUFGX5XDM72BI7YVTSLCCRRLPQUQL6PIL75P3Q/refad-server-web-ui/tsconfig.sonar.json
[ERROR] You are using version of TypeScript 2.0.10 which is not supported; supported versions >=3.2.1
[ERROR] If it's not possible to upgrade version of TypeScript used by the project, consider installing supported TypeScript version just for the time of analysis
[ERROR] Failure during analysis, Node.js command to start eslint-bridge was: {NODE_PATH=/var/lib/jenkins/workspace/_sonar-needs-path-to-nodejs-BHEV6DKGVU5AXMFUFGX5XDM72BI7YVTSLCCRRLPQUQL6PIL75P3Q/refad-server-web-ui/node_modules} node /var/lib/jenkins/workspace/_sonar-needs-path-to-nodejs-BHEV6DKGVU5AXMFUFGX5XDM72BI7YVTSLCCRRLPQUQL6PIL75P3Q/target/sonar/.sonartmp/eslint-bridge-bundle/package/bin/server 52353
java.lang.IllegalStateException: Unsupported TypeScript version
	at org.sonar.plugins.javascript.eslint.AbstractEslintSensor.processParsingError(AbstractEslintSensor.java:149)
	at org.sonar.plugins.javascript.eslint.AbstractEslintSensor.processResponse(AbstractEslintSensor.java:188)
	at org.sonar.plugins.javascript.eslint.TypeScriptSensor.analyze(TypeScriptSensor.java:154)
	at org.sonar.plugins.javascript.eslint.TypeScriptSensor.analyzeFilesWithTsConfig(TypeScriptSensor.java:141)
	at org.sonar.plugins.javascript.eslint.TypeScriptSensor.analyzeFiles(TypeScriptSensor.java:121)
	at org.sonar.plugins.javascript.eslint.AbstractEslintSensor.execute(AbstractEslintSensor.java:107)
	at org.sonar.plugins.javascript.eslint.TypeScriptSensor.execute(TypeScriptSensor.java:53)
	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:136)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:386)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:382)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:379)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:351)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy23.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.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
	at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:104)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

[INFO] Sensor TypeScript analysis [javascript] (done) | time=2326ms
[INFO] Sensor ThymeLeaf template sensor [securityjavafrontend]
[INFO] javasecurity:S5131 is not activated in quality profile: skipping execution of thymeleaf sensor.
[INFO] Sensor ThymeLeaf template sensor [securityjavafrontend] (done) | time=0ms

I know Typescript 3.9.7 is currently not supported, but I don’t think my issue is related to this support in any way.

Hello, @loic.salou!

SonarQube 8.5, which was released just last week, will resolve this issue of our SonarJS/TS analyzer from reading the wrong TypeScript version since we now package our own version of TypeScript for analysis. If you hesitate on upgrading, you can download our Community Edition (since it supports JS/TS already) and testing a SonarScanner analysis on your project.

Here are our a few more useful links regarding SonarQube 8.5:

Give it a try and please let us know if you have any further issues.

Joe

Thanks, we need a bit of time to deploy this new release as we’re running Sonarqube on Openshift and the team is busy. I’ll post some more information when I can.

Cheers,

Loïc

1 Like