【问题标题】:Sonarqube scan error with line out of range?Sonarqube 扫描错误,行超出范围?
【发布时间】: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 上的开发之间来回切换,我想我在某个时候标准化了换行符,这可能导致了问题。

标签: java sonarqube sonarqube-scan


【解决方案1】:

我在使用 sonar maven 插件和 jacoco 测试报告时遇到了同样的问题。 mvn sonar:sonar 依赖于一个existintig jacoco 报告,当源代码被更改(行已被删除),但测试报告没有更新这个错误发生。运行mvn clean test sonar:sonar 解决了它。

【讨论】:

  • 是的。我遇到了同样的问题,原因也是一个过时的 jacoco 报告。
【解决方案2】:

我试过gradle clean build它对我有用

【讨论】:

【解决方案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】:

            这个问题的主要原因:-

            1. 是的,当最近更改 存储库,但您没有使用 yaml 文件中的更新图像,并且此错误将始终在存储库中最新提交的文件中看到。

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

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

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

            【讨论】:

              猜你喜欢
              • 2020-01-23
              • 2017-07-08
              • 2018-03-18
              • 2017-07-20
              • 2018-08-01
              • 2017-05-01
              • 2017-03-15
              • 2018-12-17
              • 2017-10-11
              相关资源
              最近更新 更多