Как отключить действие после задания SonarScanner для плагина Sonar Bitbucket Cloud

#java #maven #sonarqube #pom.xml #sonar-maven-plugin

#java #maven #sonarqube #pom.xml #sonar-maven-plugin

Вопрос:

После завершения анализа SonarScanner выполняется некоторое post-job, как показано ниже:

 [DEBUG] 14:56:53.076 Post-jobs : Sonar Plug-in for Bitbucket Cloud
[INFO] 14:56:53.076 Executing post-job 'Sonar Plug-in for Bitbucket Cloud'
 

Это не удается, когда у меня есть двоичные файлы в PR с сообщением ниже:

 diff --git a/docs/folder1/images/image.png b/docs/folder1/images/image.png
new file mode 100644
index 0000000..c73bf4c
Binary files /dev/null and b/docs/folder1/images/image.png differ
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project demo-proj: [sonar4bitbucket] Failed to parse diff: string matching regex `z' expected but `B' found -> [Help 1]
 

Одно из решений приведено здесь. Но это невозможно, и я хочу полностью пропустить post-job. Это содержимое плагина sonar-maven-plugin в моем pom.xml файл в настоящее время —

 <plugin>
  <groupId>org.sonarsource.scanner.maven</groupId>
  <artifactId>sonar-maven-plugin</artifactId>
  <version>3.7.0.1746</version>
  <executions>
    <execution>
      <phase>install</phase>
      <goals>
        <goal>sonar</goal>
      </goals>
    </execution>
  </executions>
</plugin>
 

Если цель org.sonarsource.scanner.maven вызывает это, я просто хотел бы отключить это. Есть ли способ, которым я могу этого добиться?

Ответ №1:

Проблема связана с подключаемым модулем Sonar для плагина Bitbucket Cloud. Сбой SonarScanner, потому что он вынужден это делать с помощью плагина.

Я проверил проблему, на которую вы ссылались. Самая важная часть отслеживания стека:

 java.lang.RuntimeException: [sonar4bitbucket] Failed to parse diff: string matching regex z' expected but F' found
at ch.mibex.bitbucket.sonar.diff.IssuesOnChangedLinesFilter.parseOrFail(IssuesOnChangedLinesFilter.scala:54)
at ch.mibex.bitbucket.sonar.diff.IssuesOnChangedLinesFilter.filter(IssuesOnChangedLinesFilter.scala:16)
at ch.mibex.bitbucket.sonar.review.ReviewCommentsHandler.processIssues(ReviewCommentsHandler.scala:96)
at ch.mibex.bitbucket.sonar.review.ReviewCommentsHandler.updateComments(ReviewCommentsHandler.scala:33)
at ch.mibex.bitbucket.sonar.review.SonarReviewPostJob.ch$mibex$bitbucket$sonar$review$SonarReviewPostJob$handlePullRequest(SonarReviewPostJob.scala:45)
[...]
 

Я проверил упомянутые классы (SonarReviewPostJob и ReviewCommentsHandler), и я не вижу никакого способа отключить этот процессор.

Последний выпуск плагина был выпущен 18 декабря 2017 года. Я тоже не вижу никакой активной разработки (последний коммит был 2 года назад — 31 мая 2019 года). Я нашел коммит, который добавил поддержку SonarQube 6.5 , но он не был выпущен (26 января 2019 года). Наконец, README.md файл не выпущенных изменений информирует:

Плагин поддерживает только версии SonarQube <7.7 из-за требуемого режима предварительного просмотра

Это означает, что он не поддерживает SonarQube 7.X LTS. SonarSource собирается выпустить 8.X LTS в течение нескольких месяцев (это должно быть между февралем-апрелем 2021 года).

На мой взгляд, единственный способ решить проблему — удалить не поддерживаемый плагин. На данный момент он не работает с двоичными файлами, но вскоре вы начнете нажимать NoClassDefFoundError (например, при обновлении вашего экземпляра SonarQube).