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 相关文章推荐
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
使用python绘制温度变化雷达图
Oct 18 Python
Python性能分析工具Profile使用实例
Nov 19 Python
PyTorch中topk函数的用法详解
Jan 02 Python
python scatter函数用法实例详解
Feb 11 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python基于openpyxl生成excel文件
Dec 23 Python
用python实现监控视频人数统计
May 21 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通用分页类page.php[仿google分页]
2008/08/31 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
PHP SQLite类
2009/05/07 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Cython 三分钟入门教程
2009/09/17 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python机器学习实战之树回归详解
2017/12/20 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
写给爸爸的道歉信
2014/01/15 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
朋友离别感言
2015/08/04 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android