通过Shell命令调用api获取sonarQube中代码静态扫描结果中的bug数据

通过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

记录之。

你可能感兴趣的:(shell,持续集成)