Python操作Sonqube API获取检测结果并打印过程解析


Posted in Python onNovember 27, 2019

这篇文章主要介绍了Python操作Sonqube API获取检测结果并打印过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.需求:每次Sonqube检查完毕后,需要登陆才能看到结果无法通过Jenkins发布后直接看到bug 及漏洞数量。

2.demo:发布后,可以将该项目的检测结果简单打印出来显示,后面还可以集成钉钉发送到群里。

# -*- coding: UTF-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')

'''
@author:jmmei
@file: SonarQubeDingtalk.py
@time: 2019/7
'''
import requests,json,jenkins,os,time,datetime




#通过jenkins变量JOB_NAME传入第一个参数projectName

projectName=sys.argv[1]

def notification(projectName):
  # sonar API
  sonar_Url = 'http://www.baidu.com:9000/sonar/api/measures/search?projectKeys='+ projectName +'&metricKeys=alert_status%2Cbugs%2Creliability_rating%2Cvulnerabilities%2Csecurity_rating%2Ccode_smells%2Csqale_rating%2Cduplicated_lines_density%2Ccoverage%2Cncloc%2Cncloc_language_distribution'
  resopnse = requests.get(sonar_Url).text
  result = json.loads(resopnse)
  bug = 0
  leak = 0
  code_smell = 0
  coverage = 0
  density = 0
  status = ''
  statusStr = ''

  for item in result['measures']:
    if item['metric']=="bugs":
      bug = item['value']
    elif item['metric']=="vulnerabilities":
      leak = item['value']
    elif item['metric']=='code_smells':
      code_smell = item['value']
    elif item['metric']=='coverage':
      coverage = item['value']
    elif item['metric']=='duplicated_lines_density':
      density = item['value']
    elif item['metric']=='alert_status':
      status = item['value']
    else:
      pass

  if status == 'ERROR':
    messageUrl = 'http://www.iconsdb.com/icons/preview/soylent-red/x-mark-3-xxl.png'
    statusStr = '失败'
  elif status == 'OK':
    statusStr = '成功'
    messageUrl = 'http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png'

  code_reslut= "Bug数:" + bug + "个," + \
         "漏洞数:" + leak + "个," + \
         "可能存在问题代码:"+ code_smell + "行," + \
         "覆盖率:" + coverage + "%," + \
         "重复率:" + density + "%"
  print("静态代码扫描统计:"+"状态:"+ status +","+code_reslut)
  if int(bug)>=3:
    print("bug 数量太多,请尽快修复再发布项目!")
    sys.exit(1)
  else:
    print("代码质量非常好")
if __name__=="__main__":
  #sonarQube刷新结果
  #time.sleep(10)
  notification(projectName)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取糗百图片代码实例
Dec 18 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
教你使用python画一朵花送女朋友
Mar 29 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
使用Python实现跳帧截取视频帧
May 31 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
python异常处理try except过程解析
Feb 03 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
python利用dlib获取人脸的68个landmark
Nov 27 #Python
python随机数分布random均匀分布实例
Nov 27 #Python
python取均匀不重复的随机数方式
Nov 27 #Python
python中栈的原理及实现方法示例
Nov 27 #Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 #Python
python队列原理及实现方法示例
Nov 27 #Python
Python numpy.zero() 初始化矩阵实例
Nov 27 #Python
You might like
PHP注释实例技巧
2008/10/03 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
php不用正则验证真假身份证
2013/11/06 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python列表解析操作实例总结
2020/02/26 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
护理专业自我鉴定
2014/01/30 职场文书
大专学生求职自荐信
2014/07/06 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
nginx搭建NFS网络文件系统
2022/04/14 Servers