Sonarqube: линия вне диапазона, так как файл сжимается после слияния с мастером - PullRequest
0 голосов
/ 22 мая 2018

На master есть fileA (скажем, оно состоит из 1000 строк)

Мы находимся на feature_branch, где fileA имеет длину, скажем, 1050 строк.

В нашем конвейере CI мы запускаем coverage (это проект Python), и он выдает coverage.xml, который будет использоваться в качестве входного сигнала для SQ.

Наш этап предварительного просмотра 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)

Как нам поступить?

1 Ответ

0 голосов
/ 22 мая 2018

SonarPython, как и все анализаторы кода, которые импортируют отчет о покрытии, требует, чтобы анализируемый исходный код был строго идентичен тому, который использовался для генерации отчета о покрытии.Во-первых, вы должны оспорить необходимость слияния вашей ветки перед запуском sonar-scanner.И, если вам действительно нужно запустить sonar-scanner на ветви, объединенной с master, вам также необходимо запустить анализ покрытия в той же ветви, объединенной с master.

...