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实现2014火车票查询代码分享
Jan 10 Python
Python实现数据库编程方法详解
Jun 09 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
Python打包为exe详细教程
May 18 Python
Python进程池与进程锁之语法学习
Apr 11 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
一个程序下载的管理程序(四)
2006/10/09 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
js查找父节点的简单方法
2008/06/28 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
在Tensorflow中查看权重的实现
2020/01/24 Python
python如何代码集体右移
2020/07/20 Python
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
社区工作者感言
2014/03/02 职场文书
遗嘱继承公证书
2014/04/09 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
化验室安全管理制度
2015/08/06 职场文书
汉语拼音教学反思
2016/02/22 职场文书
iPhone13再次曝光
2021/04/15 数码科技
vue ref如何获取子组件属性值
2022/03/31 Vue.js