线超出范围的Sonarqube扫描错误?

时间:2016-09-28 16:34:02

标签: java sonarqube sonarqube-scan

  

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

     

[07:43:57] W:[第1/1步]错误:第523行超出文件范围   的src / main / JAVA / COM /公司/包/ File.java   (行:522)

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

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

9 个答案:

答案 0 :(得分:15)

使用声纳maven插件和jacoco测试报告时,我遇到了同样的问题。 let reject pos = // reject a given pos, the implementation is contrived let s = [4; 9; 14] // Just an example, any value may be rejected s |> List.exists (fun x -> x = pos) let getLength pos = if pos % 3 = 0 then pos * 2 else pos let mutable maxLen = 0 let getNewPosAndSetMaxLength pos len = // For each new position, check if the result of `getLenth pos` is larger than previous ones. let direction = if len < 1 then -1 else 1 let newPos = match [1..abs(len)] |> List.tryFind (fun i -> reject (pos + i * direction)) with | Some p -> p | None -> pos + len let newLen = getLength newPos maxLen <- if newLen > maxLen then newLen else maxLen newPos [<EntryPoint>] let main argv = let pos = 0 [3; -2; 6; 7] |> List.iter (fun x -> let pos = getNewPosAndSetMaxLength pos x () ) printfn "%d" maxLen 0 // return an integer exit code 依赖于existsintig jacoco报告,当源代码更改时(行已被删除),但测试报告未更新此错误发生。正在运行mvn sonar:sonar解决了它。

答案 1 :(得分:3)

我尝试了adb shell monkey -p package.name -c android.intent.category.LAUNCHER 1,它对我有用

答案 2 :(得分:1)

对我来说,这是因为我在两个不同的子模块(maven)中有完全相同的类(例如com.test.MyClass)名称和包名称,第一个模块中的MyClass更大,即120行码。第二个模块中的MyClass更短,然后自JaCoCo以来抛出了异常,尽管该报告是为此而做的。

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

即。 : com.test.MyClasscom.test.MyClassB

OR:

com.test.MyClasscom.test.foo.MyClass

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果执行 maven clean 不起作用,请检查是否有任何旧项目文件夹需要清除。一旦从Maven Pom中删除了一个子模块,它就不会删除包含旧版本的Jacoco报告的/ target目录的文件夹。

答案 5 :(得分:0)

就我而言,用Swift编写的iOS项目必须删除以前的报告。 只需删除声纳报告文件夹。

答案 6 :(得分:0)

我在使用Azure DevOps Pipelines时遇到了同样的错误,但是在为sources and output构建解决方案之前进行了清理。

现在一切恢复正常。

答案 7 :(得分:0)

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

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

一旦测试得到修复,一切就会恢复正常。

答案 8 :(得分:0)

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

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

例如 - docker run -dt --name ${{variables.containerName}} ${{variables.tempimage}} /bin/bash

  1. 在上面的命令中,我们调用了 containerName 然后 使用一些临时图像,所以如果这个临时图像被更新(意味着指向 到最新的回购)然后只有你才能解决这个问题 如果我们在 sonarqube 的 repo 和 yaml 文件中不匹配 那么我们就会得到这个问题。

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