通过Shell命令调用api获取sonarQube中代码静态扫描结果中的bug数据
问题由来
公司质量管理部制定了一个临时的静态代码扫描通过标准,就是要求静态代码扫描结果中BLOCKER, CRITICAL, MAJOR级别的bug数为0即可。 因为评价标准特殊,不能直接使用jenkins的插件sonar-quality-gates-plugin来直接判定job的失败,原因是SonarQube中质量标准无法配置出来上面三个bug类型。 所以只能通过api调用来获取上述数据。
解决方案
调用下面的api接口获取扫描结果中的BLOCKER,CRITICAL,MAJOR级别的bug数量。
-u:参数后面跟的是sonarQube访问的token;
curl -u 280f41fec8336367e189a79e9aeb077a1497130a "http://localhost:9000/api/issues/search?componentKeys=${projectKey}&types=BUG&severities=BLOCKER,CRITICAL,MAJOR&resolved=false" | tee report.json
获取到数据后,将数据输入到report.json文件中,下面还需要写个简单的脚本解析这个report来获取我们希望的数据。方便起见,就用python了:
cat parseScanReport.py
#!/usr/bin/python
import json
with open('report.json', 'r') as f:
data = json.load(f)
print data['total']
然后在shell中直接调用上面的脚本获取数据,并标记job的成功和失败:
totalBugNo=`python parseScanReport.py`
if [ $totalBugNo > 0 ]; then
echo "BLOCKER&CRITICAL&MAJOR bug number is: $totalBugNo"
exit -1
fi
记录之。