0

完成 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]

此处列出了其中一种解决方案。但这是不可行的,我想完全跳过岗位。这是我的 pom.xml 文件中 sonar-maven-plugin 插件的内容 -

<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是造成这种情况,我只想禁用它。有没有办法可以做到这一点?

4

1 回答 1

1

问题来自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)
[...]

我检查了提到的类(SonarReviewPostJobReviewCommentsHandler),我看不到任何禁用此处理器的方法。

该插件的最后一次发布是在 2017 年 12 月 18 日。我也没有看到任何积极的开发(最后一次提交是 2 年前 - 2019 年 5 月 31 日)。我发现了一个添加了对 SonarQube 6.5+ 支持的提交,但它尚未发布(2019 年 1 月 26 日)。最后,未发布更改的README.md文件通知:

该插件仅支持 SonarQube 版本 < 7.7 由于所需的预览模式

这意味着它不支持 SonarQube 7.X LTS。SonarSource 将在几个月内发布 8.X LTS(应该在 2021 年 2 月至 2021 年 4 月之间)。

在我看来,解决问题的唯一方法是卸载未维护的插件。此时它在二进制文件上失败,但很快你就会开始点击NoClassDefFoundError(例如,当你的 SonarQube 实例更新时)。

于 2021-02-15T09:09:03.937 回答