Sonarqube:行超出范围,因为文件在与 master 合并后缩小

Sonarqube: line out of range since file shrinks after merge with master

master 上有一个 fileA(假设它包含 1000 行)

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

在我们的 CI 管道上,我们正在 运行ning 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

问题如下:

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

HOWEVER, coverage 是 运行 BEFORE 合并(在以前的工作中)所以它包括> 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)

我们该怎么做?

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