SonarQube未加载所需质量配置文件 无法扫描XML文件问题咨询
SonarQube质量配置绑定及XML扫描问题处理方案
问题现状
- 需扫描Webmethods、Axway两类代码:Webmethods SCA场景已安装i8c flow插件,Axway场景已安装sonar-json插件
- 执行sonar-scanner后,.json文件可正常识别,.xml文件无法被扫描
- 排查发现当前仅加载Sonarway json、i8c flow rules两个质量配置,预期需加载Sonarway json、Sonarway xml两个配置,同时支持两类文件扫描
- 已尝试手动为项目添加json质量配置,项目页仍只显示2个配置,需确认非所需配置的移除方式、是否可通过扫描命令指定本次扫描使用的质量配置
- 现有环境信息:
- 待扫描代码仓库:
https://github.com/amolmandloi037/axway-swagger-maven - Jenkins现有扫描命令:
- 待扫描代码仓库:
stage('sonar analysis') { def scannerHome = tool 'sonar' withSonarQubeEnv() { bat(/${scannerHome}\bin\sonar-scanner.bat -Dsonar.projectKey=test2 -Dsonar.projectName=test2 Dsonar.login=admin -Dsonar.password=akmandloi/) } }
具体操作步骤
一、移除项目绑定的非所需质量配置
直接在SonarQube服务端页面操作即可:
- 用管理员账号登录SonarQube,进入projectKey为test2的目标项目页面
- 打开顶部「项目设置」下拉菜单,选择「质量配置」
- 在配置列表里找到不需要的i8c flow rules绑定项,点击条目右侧的移除按钮即可解绑,该操作仅对当前项目生效,不会修改全局配置影响其他项目
- 解绑后在同页面点击「添加配置」,找到XML对应的Sonarway XML规则,绑定到当前项目即可
二、通过扫描命令指定使用的质量配置
支持直接在扫描参数里指定本次要加载的质量配置,无需提前在页面绑定,参数格式为-Dsonar.qualityprofile.<语言标识>=<质量配置名称>,常用语言标识对应关系:
- json对应标识:
json - xml对应标识:
xml - flow对应标识:
flow
注意:当前使用的Jenkins命令存在参数笔误,
Dsonar.login前面缺少-,会导致登录参数失效,必须补上。
如果要直接通过命令指定使用Sonarway json、Sonarway xml配置,不加载flow规则,修正后的命令如下:
stage('sonar analysis') { def scannerHome = tool 'sonar' withSonarQubeEnv() { bat(/${scannerHome}\bin\sonar-scanner.bat -Dsonar.projectKey=test2 -Dsonar.projectName=test2 -Dsonar.login=admin -Dsonar.password=akmandloi -Dsonar.qualityprofile.json=Sonarway json -Dsonar.qualityprofile.xml=Sonarway xml/) } }
三、XML文件仍无法扫描的排查点
如果完成上述两步操作后还是扫不到XML文件,检查以下配置:
- SonarQube社区版及以上版本默认自带XML语言规则包,无需额外安装插件,前往「应用市场-已安装」列表确认XML规则包没有被手动禁用
- 检查扫描配置中的
sonar.exclusions参数,确认没有把.xml后缀的文件加入排除列表 - 确认待扫描的项目目录下确实存在有效的.xml格式文件
内容的提问来源于stack exchange,提问作者Amol Mandloi
相关产品推荐
相关产品推荐

