Sonarqube 扫描错误,行超出范围?
Posted
技术标签:
【中文标题】Sonarqube 扫描错误,行超出范围?【英文标题】:Sonarqube scan error with line out of range? 【发布时间】:2017-02-06 18:17:55 【问题描述】:[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 行?
我在以前的文件中看到过这个,但是当我在它的末尾添加一个空行时,问题就消失了,这个文件的末尾已经有一个空行。
【问题讨论】:
您使用的是哪个版本的 SonarQube 和 Java 插件? File.java 失败的编码是什么? 您好,SonarQube 5.6.2、java 插件 4.2、utf-8 编码文件遇到同样的问题 它似乎在我发布此内容后的第二天才开始工作......没有进行任何更改 这里有同样的问题。在带有 SonarQube 6.1 的 groovy 项目中使用 Maven。 我遇到了同样的问题,我通过将违规类的全部内容复制并粘贴到 TextWrangler 中,然后将其复制并粘贴回 Visual Studio 来解决它。这听起来很傻,但我在 PC 和 Mac 上的开发之间来回切换,我想我在某个时候标准化了换行符,这可能导致了问题。 【参考方案1】:我在使用 sonar maven 插件和 jacoco 测试报告时遇到了同样的问题。 mvn sonar:sonar
依赖于一个existintig jacoco 报告,当源代码被更改(行已被删除),但测试报告没有更新这个错误发生。运行mvn clean test sonar:sonar
解决了它。
【讨论】:
是的。我遇到了同样的问题,原因也是一个过时的 jacoco 报告。【参考方案2】:我试过gradle clean build
它对我有用
【讨论】:
这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review @PankajMakwana 不同意。仅仅因为它很短并不意味着它不是一个答案。我认为这是答案,而不是评论。【参考方案3】:同样的问题也发生在 python 代码中。我解决了在文件末尾添加一个空行。
【讨论】:
对我来说,是覆盖 xml 没有被删除的文件刷新。【参考方案4】:对我来说,这是因为我在两个不同的子模块(maven)中有完全相同的类(例如 com.test.MyClass
)名称和包名称,第一个模块中的 MyClass
更大,即 120 行代码。第二个模块中的MyClass
较短,然后自 JaCoCo 以来引发了异常,尽管报告是针对此的。
解决方案是重命名其中一个类或将其移动到不同的包中。
即:
com.test.MyClass
和
com.test.MyClassB
或者:
com.test.MyClass
和
com.test.foo.MyClass
【讨论】:
【参考方案5】:对于 Azure DevOps,您可能希望确保您的构建在开始构建之前清理源代码。
【讨论】:
【参考方案6】:如果执行 maven clean 不起作用,请检查您是否有任何需要清理的旧项目文件夹。一旦你从 maven pom 中删除了一个子模块,它就不会删除包含 /target 目录以及很久以前的 jacoco 报告的文件夹。
【讨论】:
【参考方案7】:就我而言,一个用 Swift 编写的 ios 项目必须删除以前的报告。 只需删除 sonar-reports 文件夹即可。
【讨论】:
【参考方案8】:我在使用 Azure DevOps Pipelines 时遇到了同样的错误,但在为 sources and output
构建解决方案之前进行了清理工作。
现在一切都恢复正常了。
【讨论】:
你是怎么做到的?我在 Azure DevOps 管道中遇到了这个问题。【参考方案9】:我们在 AspNET-Core-Project 上遇到了同样的问题。
然后我们看到,不幸的是,我们的测试失败并没有导致我们的 Jenkins-Job 失败。相反,sonarqube 分析测试和覆盖率产生了错误。
一旦测试得到修复,一切都会再次正常运行。
【讨论】:
【参考方案10】:这个问题的主要原因:-
-
是的,当最近更改
存储库,但您没有使用 yaml 文件中的更新图像,并且此错误将始终在存储库中最新提交的文件中看到。
对于前 - docker run -dt --name $variables.containerName $variables.tempimage /bin/bash
在上面的命令中,我们调用了 containerName,然后 使用一些临时图像,所以如果这个临时图像被更新(意味着指向 到最新的回购)那么只有你才能解决这个问题 如果我们在 sonarqube 的 repo 和 yaml 文件中存在不匹配 那么我们就会得到这个问题。
要获取最新的图像,我们可以在里面使用 Team_image_builder yaml 文件,如果我们从 repo 中删除最新提交的文件,那么这个问题 不会来,因为那时双方的差异为零。
【讨论】:
以上是关于Sonarqube 扫描错误,行超出范围?的主要内容,如果未能解决你的问题,请参考以下文章