【发布时间】:2017-10-15 07:46:26
【问题描述】:
我已经使用 SonarQube 成功分析了一段时间的项目,但现在我遇到了一些错误。确切的错误是:
12:26:01.413 ERROR: Error during SonarQube Scanner execution
java.lang.IllegalArgumentException: 74 is not a valid line offset for pointer. File [blaablaablaa...] has 70 character(s) at line 118
at org.sonar.api.internal.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
at org.sonar.api.batch.fs.internal.DefaultInputFile.checkValid(DefaultInputFile.java:252)
at org.sonar.api.batch.fs.internal.DefaultInputFile.newPointer(DefaultInputFile.java:186)
at org.sonar.api.batch.fs.internal.DefaultInputFile.newRange(DefaultInputFile.java:202)
at org.sonarsource.dotnet.shared.plugins.AbstractSensor$SarifParserCallbackImplementation.onIssue(AbstractSensor.java:160)
at org.sonarsource.dotnet.shared.sarif.SarifParser10.handleResultFileElement(SarifParser10.java:130)
at org.sonarsource.dotnet.shared.sarif.SarifParser10.handleLocationsElement(SarifParser10.java:102)
at org.sonarsource.dotnet.shared.sarif.SarifParser10.handleIssue(SarifParser10.java:73)
at org.sonarsource.dotnet.shared.sarif.SarifParser10.handleIssues(SarifParser10.java:62)
at org.sonarsource.dotnet.shared.sarif.SarifParser10.accept(SarifParser10.java:54)
at org.sonarsource.dotnet.shared.sarif.SarifParser10.accept(SarifParser10.java:37)
at org.sonar.plugins.csharp.CSharpSensor.importRoslynReport(CSharpSensor.java:188)
at org.sonar.plugins.csharp.CSharpSensor.executeInternal(CSharpSensor.java:123)
at org.sonar.plugins.csharp.CSharpSensor.execute(CSharpSensor.java:79)
at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:57)
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:49)
at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:78)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:175)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:143)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:128)
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:262)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:257)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:255)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:247)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:143)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:128)
at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47)
at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:86)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:143)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:128)
at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:118)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:117)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
12:26:01.419 DEBUG: Execution getVersion
12:26:01.420 DEBUG: Execution stop
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:233)
at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:123)
at org.sonarsource.scanner.cli.Main.execute(Main.java:77)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)
我已将 C# 分析器更新到最新版本(已安装 5.10.1 (build 1411))。至少更新中心不提供更新的?
我还将扫描仪更新为 sonar-scanner-msbuild-2.3.2.573
我正在使用 SQ 6.3.1.21392
在 SO 中有很多类似的帖子,但它们都很老,他们认为它要么是分析器中的已知错误,要么是编码问题。我尝试将问题文件编码更改为纯 UTF-8,但这并不能解决问题。 Notepad++ 显示编码为 UTF-8-BOM。我也使用了 bomremover,但这根本不会改变错误。
除了从分析中排除所有问题文件之外,还有什么建议可以尝试吗?
编辑
该文件的编码是 UTF-8-BOM,但将其转换为纯 UTF-8 没有区别。
我使用 Notepad++ 转换为 UTF-8 并重新运行分析。结果相同的错误,这是新编码的屏幕截图:
【问题讨论】:
-
第 118 行有多少列? SonarQube“看到”70,但罗斯林似乎“看到”至少 74。
-
@JulienH.-SonarSourceTeam 我在那一行有 70 列。
-
Roslyn 的报告在某种程度上是错误的。找到根本原因的最佳机会是您:1) 在sonar-csharp 上打开一个问题 2) 共享未经修改的违规 C# 文件(只是为了检查编码) 3) 共享 Roslyn 报告(应该位于
\bin\Debug\.exe.RoslynCA.json 如果您不能公开分享某些信息,请在问题上提及,我们会给您一个私人地址,您可以将信息发送到。 -
我们的项目正在前往 Github 的路上,所以一旦我们到达那里,我会告诉你 URL,以便每个人都可以看到。我用文件的信息更新了原始问题。