sonarqube-scanner@^4.0.0质量门失败未返回非零退出码求助
问题描述
- SonarQube:开发者版 v10.5.1 (90531)
sonarqube-scanner版本:4.0.0/4.0.1- Node.js版本:20.14
执行命令:
npx sonarqube-scanner@^4.0.0 -Dsonar.qualitygate.wait="true" [...]
期望质量门检测到需修复的新问题时,命令返回非零退出码使构建失败,但实际始终返回0,构建不会失败。而sonarqube-scanner@^3.5.0版本可正常触发构建失败。
解决方案
1. 添加sonar.qualitygate.failOnError参数
4.x版本的sonarqube-scanner默认不会将质量门失败转为非零退出码,需显式添加-Dsonar.qualitygate.failOnError="true"参数,完整命令如下:
npx sonarqube-scanner@^4.0.0 -Dsonar.qualitygate.wait="true" -Dsonar.qualitygate.failOnError="true" [...]
2. 验证扫描日志
执行命令后查看扫描日志,确认以下内容:
- 日志中是否出现
Quality gate status: FAILED的提示 - 是否有对应质量门失败的错误输出(Node.js版扫描器会同步输出相关状态信息)
3. 检查SonarQube权限
确保执行扫描的用户拥有查看质量门的权限(4.x版本对权限校验逻辑有调整,需确认权限配置),可在SonarQube后台「权限管理」模块中核查。
4. 确认质量门规则配置
检查SonarQube中对应项目的质量门规则,确保触发失败的条件是针对新问题(而非存量问题),避免因规则范围不符导致的预期外结果。
内容的提问来源于stack exchange,提问作者borN_free
相关产品推荐
相关产品推荐

