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)