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写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
python发送邮件实例分享
Jul 28 Python
Python 模拟购物车的实例讲解
Sep 11 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
Python实现快速计算词频功能示例
Jun 25 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
Python实现扫码工具的示例代码
Oct 09 Python
Python 制作自动化翻译工具
Apr 25 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
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python多线程实例教程
2014/09/06 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python分治法定义与应用实例详解
2017/07/28 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
运动会解说词100字
2014/01/31 职场文书
社区安全检查制度
2014/02/03 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
欢迎领导标语
2014/06/27 职场文书
护士求职信
2014/07/05 职场文书
狮子林导游词
2015/02/03 职场文书
2015年推普周活动总结
2015/03/27 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
高三物理教学反思
2016/02/20 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
用Python实现屏幕截图详解
2022/01/22 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python
MySQL数据管理操作示例讲解
2022/12/24 MySQL