Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sonarqube:行超出范围,因为文件在与主文件合并后收缩_Python_Sonarqube_Continuous Integration_Gitlab_Code Coverage - Fatal编程技术网

Python Sonarqube:行超出范围,因为文件在与主文件合并后收缩

Python Sonarqube:行超出范围,因为文件在与主文件合并后收缩,python,sonarqube,continuous-integration,gitlab,code-coverage,Python,Sonarqube,Continuous Integration,Gitlab,Code Coverage,在master上有一个fileA(假设它由1000行组成) 我们在feature\u分支,其中fileA的长度为1050行 在我们的CI管道上,我们正在运行coverage(这是一个Python项目),它生成coverage.xml,用作SQ的cov输入 我们的SQ预览阶段如下所示: - git config --global user.name "SonarQube" - git config --global user.email "sonarqube@somedomain.

master
上有一个
fileA
(假设它由1000行组成)

我们在
feature\u分支
,其中
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行

但是
覆盖范围
在合并之前运行(在上一个作业中),因此它包含行数>1000的结果(即合并后的
文件a的长度)

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

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要求分析的源代码与生成覆盖率报告所用的源代码完全相同。 首先,在运行声纳扫描仪之前,您应该挑战合并分支的需要。
而且,如果您确实需要在与master合并的分支上运行sonar scanner,还需要在与master合并的同一分支上运行覆盖率分析。

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