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

时间:2018-05-22 07:16:07

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

fileA上有master(说它由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

问题如下:

AFTER 合并后,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)

我们如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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