在sonarqube系统中,可以通过webhook实现代码分析结果的通知。比如我们希望将分析结果发送到钉钉群,那么可以新建一个web应用,编写发送消息到钉钉群的逻辑,然后提供一个http接口,设置到sonarqube的webhook中。这样,当sonarqube分析完代码,会调用设置的http接口。这样就实现了代码质量分析结果通知到钉钉群的功能。
jenkins执行命名示例
mvn clean compile -Dmaven.test.failure.ignore=true \\
sonar:sonar -Dsonar.host.url=http://10.0.0.1:9000 -Dsonar.login=xxxxxxx
sonarqube分析结果json示例
{
"serverUrl": "http://localhost:9000",
"taskId": "AVh21JS2JepAEhwQ-b3u",
"status": "SUCCESS",
"analysedAt": "2016-11-18T10:46:28+0100",
"revision": "c739069ec7105e01303e8b3065a81141aad9f129",
"project": {
"key": "myproject",
"name": "My Project",
"url": "https://mycompany.com/sonarqube/dashboard?id=myproject"
},
"branch": {
"name": "master",
"url": "http://10.0.0.10:9000/dashboard?id=xxxx
},
"properties": {
},
"qualityGate": {
"conditions": [
{
"errorThreshold": "1",
"metric": "new_security_rating",
"onLeakPeriod": true,
"operator": "GREATER_THAN",
"status": "OK",
"value": "1"
},
],
"name": "SonarQube way",
"status": "OK"
}
}
因为开源版的sonarqube不支持代码多分支管理,分析结果的json中,branch始终为master。为了解决这个问题,我们可以使用sonarqube的自定义参数来解决。方法是在sonar扫描时指定自定义参数,如下:
mvn clean compile sonar:sonar -Dsonar.analysis.branch=test
参考
https://docs.sonarqube.org/latest/project-administration/webhooks/