【问题标题】:Sonarqube: line out of range since file shrinks after merge with masterSonarqube:行超出范围,因为与主文件合并后文件缩小
【发布时间】:2018-10-31 21:05:55
【问题描述】:

master 上有一个fileA(比如说它由 1000 行组成)

我们在feature_branch,其中fileA 的长度为1050 行。

在我们的 CI 管道上,我们正在运行 coverage(它是一个 Python 项目)并生成 coverage.xml,用作 SQ 的 cov 输入。

我们的SQ预览阶段如下:

    - git config --global user.name "SonarQube"
    - git config --global user.email "sonarqube@somedomain.com"
    - git checkout origin/master
    - git merge $CI_BUILD_REF --no-commit --no-ff
    - sonar-scanner -Dsonar.analysis.mode=preview -Dsonar.gitlab.project_id=$CI_PROJECT_PATH -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
  except:
   - master@mainprojectnamespace

问题如下:

合并之后,fileA 最终(再次)有 1000 行

但是coverage 是在合并之前(在以前的作业中)运行的,因此它包含 > 1000 行的结果(这是 fileA 的长度合并后)

这会导致(我相信)以下错误:

ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Line 1040 is out of range in the file path/to/fileA.py (lines: 1000)

我们该怎么做?

【问题讨论】:

    标签: python sonarqube continuous-integration gitlab code-coverage


    【解决方案1】:

    SonarPython 与所有导入覆盖率报告的代码分析器一样,要求分析的源代码与用于生成覆盖率报告的源代码完全相同。 首先,您应该挑战在运行 sonar-scanner 之前合并分支的需要。 而且,如果你真的需要在与 master 合并的分支上运行 sonar-scanner,你还需要在与 master 合并的同一分支上运行覆盖率分析。

    【讨论】:

      猜你喜欢
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2017-07-08
      • 1970-01-01
      • 2020-01-23
      • 2017-06-18
      相关资源
      最近更新 更多