SonarQube 在 Android gitlab 项目中的合并请求上没有新行

Posted

技术标签:

【中文标题】SonarQube 在 Android gitlab 项目中的合并请求上没有新行【英文标题】:SonarQube no new lines on merge request in Android gitlab project 【发布时间】:2021-11-08 00:53:04 【问题描述】:

我的目标是将完整的 JaCoCo 报告发送到 SonarQube 并通过 gitlab 进行分析。我的完整命令如下:

gradlew \
-Dsonar.host.url=$URL \
-Dsonar.pullrequest.key=$NUMBER \
-Dsonar.pullrequest.branch=branch_name \
-Dsonar.pullrequest.base=main \
-Dsonar.qualitygate.wait=true \
sonarqube

当我使用本地命令行时,一切正常。 Sonar 在拉取请求中正确显示具有代码覆盖率的新行。奇怪的是,当我使用 gitlab-ci 的 same 命令时,它没有显示任何新行。

如何修复我的管道?

【问题讨论】:

【参考方案1】:

我使用--debug 模式运行我的所有进程,如下所示:

gradlew \
-Dsonar.host.url=$URL \
-Dsonar.pullrequest.key=$NUMBER \
-Dsonar.pullrequest.branch=branch_name \
-Dsonar.pullrequest.base=main \
-Dsonar.qualitygate.wait=true \
sonarqube --debug > output.txt

在短模式下获取文件作为工件很有帮助:

  artifacts:
    name: "sonar_logs"
    paths:
      - output.txt

问题并没有我想象的那么复杂:

2021-09-12T13:06:03.370+0200 [WARN] [org.sonarqube.gradle.SonarQubeTask] Could not find ref 'refs/heads/master' in refs/heads, refs/remotes, refs/remotes/upstream or refs/remotes/origin

为了解决这个问题,我刚刚在“sonarqube”目标之前添加了一行:

script:
- git fetch origin master:master
- gradlew \
-Dsonar.host.url=$URL \
-Dsonar.pullrequest.key=$NUMBER \
-Dsonar.pullrequest.branch=branch_name \
-Dsonar.pullrequest.base=main \
-Dsonar.qualitygate.wait=true \
sonarqube

由于作业是封闭环境,它看不到任何其他分支,如 master。您必须手动获取 master 分支,然后 SonarQube 可以比较差异并显示新行。

【讨论】:

以上是关于SonarQube 在 Android gitlab 项目中的合并请求上没有新行的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Android 的多模块项目的 SonarQube

SonarQube 在 Android gitlab 项目中的合并请求上没有新行

使用android productFlavors时,sonarqube gradle插件异常

SonarQube 版本 5.6.4 Android Lint Profile 不分析 xml 文件

Sonarqube 未显示 Android Lint 的结果

SonarQube 代码覆盖率无法解释 Android 项目中的 Kotlin 文件