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 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
用pandas按列合并两个文件的实例
Apr 12 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
详解python的四种内置数据结构
Mar 19 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python hashlib加密实现代码
Oct 17 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
Jun 29 Python
Python通过队列来实现进程间通信的示例
Oct 14 Python
Python接口自动化测试框架运行原理及流程
Nov 30 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四大安全策略
2014/03/12 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
php操作access数据库的方法详解
2017/02/22 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
使用Eclipse如何开发python脚本
2018/04/11 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
Python-openCV开运算实例
2020/07/05 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
《梅兰芳学艺》教学反思
2014/02/24 职场文书
无偿献血倡议书
2014/04/14 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
售房协议书
2014/08/19 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书