声纳扫描错误且线路超出范围?

问题描述 投票:0回答:12

[07:43:57]W:[步骤 1/1] 错误:SonarQube 扫描仪执行期间出错

[07:43:57]W:[步骤 1/1] 错误:第 523 行超出文件范围 src/main/java/com/company/package/File.java (行数:522)

由于某种原因,Sonarqube 在第 523 行报告错误,但源文件中只有 522 行?

我在以前的文件中看到了这个,但是当我在它的末尾添加一个空行时,问题就消失了,这个文件的末尾已经有一个空行。

java sonarqube sonarqube-scan
12个回答
29
投票

我在使用sonar maven插件和jacoco测试报告时遇到了同样的问题。

mvn sonar:sonar
依赖于existintig jacoco报告,当源代码更改(行已被删除),但测试报告未更新时,会发生此错误。运行
mvn clean test sonar:sonar
解决了它。


5
投票

我尝试了

gradle clean build
它对我有用


4
投票

同样该死的问题也发生在 python 代码中。我解决了在文件末尾添加一个空行的问题。


3
投票

对我来说,这是因为我在两个不同的子模块(maven)中具有完全相同的类(例如

com.test.MyClass
)名称和包名称,第一个模块中的
MyClass
更大,即120行代码。第二个模块中的
MyClass
较短,然后自 JaCoCo 以来抛出异常,尽管报告是针对此的。

解决方案是重命名其中一个类或将其移动到另一个包中。

即:

com.test.MyClass
com.test.MyClassB

或:

com.test.MyClass
com.test.foo.MyClass


2
投票

对于 Azure DevOps,您可能希望确保您的构建在开始构建之前清理源代码。


1
投票

我们的 AspNET-Core-Project 也遇到了同样的问题。

然后我们看到,我们的测试失败了,不幸的是,这些失败并没有导致我们的 Jenkins-Job 失败。相反,声纳分析测试和覆盖范围会产生错误。

一旦修复了测试,一切就恢复正常了。


0
投票

如果执行 maven clean 不起作用,请检查是否有任何需要清理的旧项目文件夹。一旦你从 maven pom 中删除了一个子模块,它就不会删除包含 /target 目录和很久以前的 jacoco 报告的文件夹。


0
投票

就我而言,用 Swift 编写的 iOS 项目必须删除以前的报告。 只需删除 sonar-reports 文件夹即可。


0
投票

我在使用 Azure DevOps Pipelines 时遇到了同样的错误,但在构建

sources and output
的解决方案之前进行了清理,完成了这项工作。

现在一切又恢复正常了。


0
投票

出现此问题的主要原因:-

  1. 是的,当最近的更改发生时,就会出现此问题 存储库,但您没有在 yaml 文件中使用更新的图像,并且此错误将始终出现在存储库中最新提交的文件中。

对于前- docker run -dt --name ${{variables.containerName}} ${{variables.tempimage}} /bin/bash

  1. 在上面的命令中,我们调用容器名称,然后 使用一些临时图像,所以如果这个临时图像被更新(意味着指向 到最新的存储库)那么只有您才能解决此问题 如果 sonarqube 的存储库和 yaml 文件中存在不匹配的情况 然后我们就会遇到这个问题。

  2. 要获取最新的镜像,我们可以在里面使用 Team_image_builder yaml 文件,如果我们从存储库中删除最新提交的文件,那么这个问题 不会来,因为那时双方的差异将为零。


0
投票

再次运行之前删除上次运行的覆盖率报告。


0
投票

为了避免覆盖率报告出现问题,请确保在再次执行之前将其删除。首先,构建 xml 文件,然后执行 sonar-scanner。为此,请按顺序运行以下命令:coverage xml、coverage html 和 sonar-scanner。或者,您可以尝试删除 .coverage 和 .scannerwork 文件。

© www.soinside.com 2019 - 2024. All rights reserved.