Trivadis / plsql-cop-sonar

db* CODECOP for SonarQube
13 stars 3 forks source link

Not a valid line for pointer #7

Closed ffm145 closed 1 year ago

ffm145 commented 1 year ago

Some files that are not formed along dbcodecop expectations cause sonarscanner to scan nothing at all. The problem can be worked around by adding a newline after the / The File is UTF-8 encoded (no BOM) and uses windows line breaks.

INFO: Process resource get_last_process_info.fnc INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 12.297s INFO: Final Memory: 41M/150M INFO: ------------------------------------------------------------------------ ERROR: Error during SonarScanner execution java.lang.IllegalArgumentException: 11 is not a valid line for pointer. File topcontrol/ddl/function/get_last_process_info.fnc has 10 line(s) at org.sonar.api.utils.Preconditions.checkArgument(Preconditions.java:43) at org.sonar.api.batch.fs.internal.DefaultInputFile.checkValid(DefaultInputFile.java:336) at org.sonar.api.batch.fs.internal.DefaultInputFile.newPointer(DefaultInputFile.java:272) at org.sonar.api.batch.fs.internal.DefaultInputFile.newRange(DefaultInputFile.java:288) at com.trivadis.sonar.plugin.AbstractPlSqlCopSensor.saveIssue(AbstractPlSqlCopSensor.java:129) at com.trivadis.sonar.plugin.AbstractPlSqlCopSensor.lambda$null$0(AbstractPlSqlCopSensor.java:106) at java.base/java.util.ArrayList.forEach(Unknown Source) at com.trivadis.sonar.plugin.AbstractPlSqlCopSensor.lambda$analyzeInputFile$1(AbstractPlSqlCopSensor.java:105) at java.base/java.util.Optional.ifPresent(Unknown Source) at com.trivadis.sonar.plugin.AbstractPlSqlCopSensor.analyzeInputFile(AbstractPlSqlCopSensor.java:102) at com.trivadis.sonar.plugin.AbstractPlSqlCopSensor.analyze(AbstractPlSqlCopSensor.java:88) at com.trivadis.sonar.plugin.AbstractPlSqlCopSensor.execute(AbstractPlSqlCopSensor.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:79) 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:382) at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:378) at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:347) 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:136) 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(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) 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)

get_last_process_info.fnc.txt

ffm145 commented 1 year ago

looks like it is related to issue #1. dbcodecop plugin version used is latest as of 12th january 2023.

PhilippSalvisberg commented 1 year ago

Hi @ffm145 ,

I can reproduce the error with the attached file (after removing the final .txt extension).

As you said the workaround is to add a final line break to file. The preprocessor of the parser is doing that. However, SonarQube finds only 10 lines and therefore does not accept diagnostic data for a line 11.

I consider this a bug and will address this in the next version.

Thanks for reporting this.

PhilippSalvisberg commented 1 year ago

fixed with https://github.com/Trivadis/plsql-cop-sonar/releases/tag/v8.9.6