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 项目中的合并请求上没有新行的主要内容,如果未能解决你的问题,请参考以下文章
SonarQube 在 Android gitlab 项目中的合并请求上没有新行
使用android productFlavors时,sonarqube gradle插件异常
SonarQube 版本 5.6.4 Android Lint Profile 不分析 xml 文件