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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
Python创建字典的八种方式
Feb 27 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
tensorflow如何批量读取图片
Aug 29 Python
python urllib爬虫模块使用解析
Sep 05 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 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
德生H-501的评价与改造
2021/03/02 无线电
超级简单的php+mysql留言本源码
2009/11/11 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
wxPython实现画图板
2020/08/27 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
Pandas之缺失数据的实现
2021/01/06 Python
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
小学班长竞选演讲稿
2014/04/24 职场文书
扬尘污染防治方案
2014/06/15 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
英语感谢信范文
2015/01/20 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Python之基础函数案例详解
2021/08/30 Python