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通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
Python编写生成验证码的脚本的教程
May 04 Python
详解python单元测试框架unittest
Jul 02 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
virtualenv介绍及简明教程
Jun 23 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
python unichr函数知识点总结
Dec 16 Python
pyqt5打包成exe可执行文件的方法
May 14 Python
Python实现Hash算法
Mar 18 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数组函数array_walk用法示例
2016/05/26 PHP
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
softmax及python实现过程解析
2019/09/30 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
python ETL工具 pyetl
2020/06/07 Python
Pandas的Apply函数具体使用
2020/07/21 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
Python调用Redis的示例代码
2020/11/24 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
员工工作表扬信范文
2014/01/13 职场文书
拔河比赛口号
2014/06/10 职场文书
征兵宣传标语
2014/06/20 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
春季运动会开幕词
2015/01/28 职场文书
宣传委员竞选稿
2015/11/19 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS