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实现跨文件全局变量的方法
Jul 07 Python
深入理解python中的atexit模块
Mar 07 Python
pygame实现简易飞机大战
Sep 11 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
django列表筛选功能的实现代码
Mar 27 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 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中的类-什么叫类
2006/11/20 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
10个php函数实用却不常见
2015/10/13 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
Python基础练习之用户登录实现代码分享
2017/11/08 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
python中的数据结构比较
2019/05/13 Python
pandas计数 value_counts()的使用
2019/06/24 Python
python中的colorlog库使用详解
2019/07/05 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
python 调整图片亮度的示例
2020/12/03 Python
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
商业融资计划书
2014/04/29 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
学风建设主题班会
2015/08/17 职场文书
如何书写邀请函?
2019/06/24 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
golang生成并解析JSON
2022/04/14 Golang