[07:43:57] W:[步骤1/1]错误:SonarQube扫描仪执行期间出错
[07:43:57] W:[第1/1步]错误:第523行超出文件范围 的src / main / JAVA / COM /公司/包/ File.java (行:522)
由于某些原因,Sonarqube在第523行报告错误,但源文件中只有522行?
我在之前的文件中看到了这个,但是当我在其末尾添加一个空行时,问题就消失了,这个文件的末尾已经有一个空行。
答案 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.MyClass
和
com.test.MyClassB
OR:
com.test.MyClass
和
com.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)
出现此问题的主要原因:-
例如 - docker run -dt --name ${{variables.containerName}} ${{variables.tempimage}} /bin/bash
在上面的命令中,我们调用了 containerName 然后 使用一些临时图像,所以如果这个临时图像被更新(意味着指向 到最新的回购)然后只有你才能解决这个问题 如果我们在 sonarqube 的 repo 和 yaml 文件中不匹配 那么我们就会得到这个问题。
要获取最新的图像,我们可以在内部使用 Team_image_builder yaml 文件,如果我们从 repo 中删除最新提交的文件,那么这个问题 不会来,因为那时双方的差异将为零。