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 合并的同一分支上的覆盖率分析。
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 合并的同一分支上的覆盖率分析。