sonar-scala / sonar-scala

A free and open-source SonarQube plugin for static code analysis of Scala projects.

Home Page:https://sonar-scala.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sonar scan fails on underscore `_` in literal numbers

diversit opened this issue · comments

Problem
SonarScanner throws an error when Scala code contains a numeric literal. E.g. 150_000L.

This problem seems to be caused by Scalariform not allowing an underscore in a numeric literal in the checkNoLetter function in ScalaOnlyLexer.
I also created an issue there: #293

SonarPlugin is using Scalariform by passing forgiveErrors = false in SonarPlugin L100.

Is there any reason not to 'forgive' any errors?
Would it be possible to make this configurable to allow these kind of errors, until it gets fixed in Scalariform?

Expected
SonarScanner should not fail on numeric literals.

Stacktrace

2022-06-07T06:23:42.9924548Z INFO: Quality profile for json: Sonar way
2022-06-07T06:23:42.9924968Z INFO: Quality profile for plsql: Sonar way
2022-06-07T06:23:42.9925264Z INFO: Quality profile for scala: Scalastyle
2022-06-07T06:23:42.9925526Z INFO: Quality profile for xml: Sonar way
2022-06-07T06:23:42.9925795Z INFO: Quality profile for yaml: Sonar way
2022-06-07T06:23:42.9926402Z INFO: ------------- Run sensors on module dhl-parcel-invite
2022-06-07T06:23:44.4918634Z INFO: Load metrics repository
2022-06-07T06:23:44.6900872Z INFO: Load metrics repository (done) | time=198ms
2022-06-07T06:24:02.7945306Z INFO: Sensor Scala Sensor [scala]
2022-06-07T06:24:02.7953484Z WARN: [sonar-scala] The 'sonar.scala.version' is not properly set or is missing, using the default value: '2.13.'.
2022-06-07T06:24:04.4895911Z INFO: ------------------------------------------------------------------------
2022-06-07T06:24:04.4896505Z INFO: EXECUTION FAILURE
2022-06-07T06:24:04.4897182Z INFO: ------------------------------------------------------------------------
2022-06-07T06:24:04.4897716Z INFO: Total time: 1:03.571s
2022-06-07T06:24:04.7900561Z ERROR: Error during SonarScanner execution
2022-06-07T06:24:04.7900882Z INFO: Final Memory: 33M/138M
2022-06-07T06:24:04.7901534Z INFO: ------------------------------------------------------------------------
2022-06-07T06:24:04.7902802Z scalariform.lexer.ScalaLexerException: Invalid literal number: _
2022-06-07T06:24:04.7908956Z 	at scalariform.lexer.ScalaOnlyLexer.checkNoLetter(ScalaOnlyLexer.scala:511)
2022-06-07T06:24:04.7909889Z 	at scalariform.lexer.ScalaOnlyLexer.restOfUncertainToken$1(ScalaOnlyLexer.scala:462)
2022-06-07T06:24:04.7910627Z 	at scalariform.lexer.ScalaOnlyLexer.getNumber(ScalaOnlyLexer.scala:505)
2022-06-07T06:24:04.7911323Z 	at scalariform.lexer.ScalaOnlyLexer.fetchScalaToken(ScalaOnlyLexer.scala:70)
2022-06-07T06:24:04.7912505Z 	at scalariform.lexer.ScalaOnlyLexer.fetchScalaToken$(ScalaOnlyLexer.scala:19)
2022-06-07T06:24:04.7913191Z 	at scalariform.lexer.ScalaLexer.fetchScalaToken(ScalaLexer.scala:8)
2022-06-07T06:24:04.7913790Z 	at scalariform.lexer.ScalaLexer.next(ScalaLexer.scala:178)
2022-06-07T06:24:04.7914372Z 	at scalariform.lexer.ScalaLexer.next(ScalaLexer.scala:8)
2022-06-07T06:24:04.7914979Z 	at scala.collection.immutable.List.prependedAll(List.scala:156)
2022-06-07T06:24:04.7915625Z 	at scala.collection.IterableOnceOps.toList(IterableOnce.scala:1251)
2022-06-07T06:24:04.7916263Z 	at scala.collection.IterableOnceOps.toList$(IterableOnce.scala:1251)
2022-06-07T06:24:04.7916891Z 	at scalariform.lexer.ScalaLexer.toList(ScalaLexer.scala:8)
2022-06-07T06:24:04.7917739Z 	at com.mwz.sonar.scala.Scala$.tokenize(ScalaPlugin.scala:100)
2022-06-07T06:24:04.7918394Z 	at com.mwz.sonar.scala.sensor.ScalaSensor.$anonfun$execute$1(ScalaSensor.scala:47)
2022-06-07T06:24:04.7919017Z 	at com.mwz.sonar.scala.sensor.ScalaSensor.$anonfun$execute$1$adapted(ScalaSensor.scala:44)
2022-06-07T06:24:04.7919480Z 	at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
2022-06-07T06:24:04.7919918Z 	at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
2022-06-07T06:24:04.7920343Z 	at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
2022-06-07T06:24:04.7920779Z 	at com.mwz.sonar.scala.sensor.ScalaSensor.execute(ScalaSensor.scala:44)
2022-06-07T06:24:04.7921268Z 	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
2022-06-07T06:24:04.7921922Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
2022-06-07T06:24:04.7922444Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
2022-06-07T06:24:04.7923020Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
2022-06-07T06:24:04.7923579Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
2022-06-07T06:24:04.7924135Z 	at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:81)
2022-06-07T06:24:04.7924736Z 	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
2022-06-07T06:24:04.7925295Z 	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
2022-06-07T06:24:04.7925845Z 	at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:392)
2022-06-07T06:24:04.7926427Z 	at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:388)
2022-06-07T06:24:04.7927044Z 	at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:357)
2022-06-07T06:24:04.7927649Z 	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
2022-06-07T06:24:04.7928471Z 	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
2022-06-07T06:24:04.7929092Z 	at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:134)
2022-06-07T06:24:04.7929684Z 	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188)
2022-06-07T06:24:04.7930245Z 	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167)
2022-06-07T06:24:04.7930715Z 	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
2022-06-07T06:24:04.7931104Z 	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
2022-06-07T06:24:04.7931621Z 	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
2022-06-07T06:24:04.7932187Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-06-07T06:24:04.7932704Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-06-07T06:24:04.7933495Z 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-06-07T06:24:04.7933955Z 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2022-06-07T06:24:04.7934437Z 	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
2022-06-07T06:24:04.7934881Z 	at com.sun.proxy.$Proxy0.execute(Unknown Source)
2022-06-07T06:24:04.7935280Z 	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
2022-06-07T06:24:04.7935765Z 	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
2022-06-07T06:24:04.7936185Z 	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
2022-06-07T06:24:04.7936626Z 	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
2022-06-07T06:24:04.7936992Z 	at org.sonarsource.scanner.cli.Main.main(Main.java:61)