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 操作Sonqube API 获取检测结果并打印的更多相关文章
- Python 操作Zabbix API 获取ERROR级别告警信息并打印
1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去.(合成语音及播报已经完成) 2.现实:整理zabbix告警级别,将不太重要的告警放到ER ...
- python 操作 saltstack Api(二) 示例
获取token #!/usr/bin/env python #-*-coding:utf--*- import urllib import urllib.parse import urllib.req ...
- Python 操作 GA API 指南
因为需要写一个 Blog Feature 的缘故,所以接触了下 GA 的 Python API,发现 G 家的 API 不是那么直观,比较绕,但是,在使用过程中发现其实 G 家的 API 设计挺有意思 ...
- python操作json文件获取内容
写case时,将case 写到json文件比写到,写python一定要学会处理json 以下,是要处理的json 处理操作包括:打开json文件,获取json文件内容,关闭json文件,读取内容中的对 ...
- python操作ansible api示例
#!/usr/bin/env python # -*- coding:utf-8 -*- import json import shutil from collections import named ...
- Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并
# 以下内容为原创,转载请注明出处 1 import xlrd # 读xlsx import xlsxwriter # 写xlsx import urllib.request # url请求,Pyth ...
- Python——使用高德API获取POI(以深圳南山医疗保健服务POI为例)
以下内容为原创,转载请注明出处. import xlwt #创建Excel,见代码行8,9,11,25,28:CMD下:运行pip install xlwt进行安装 import urllib.req ...
- python操作hive并且获取查询结果scheam
执行hive -e 命令并且获取对应的select查询出来的值及其对应的scheam字段 需要在执行语句中前部添加 set hive.cli.print.header=true; 这个设置,如下语句: ...
- 通过Python操作hbase api
# coding=utf-8 # Author: ruin """ discrible: """ from thrift.transport ...
随机推荐
- hdoj1247(字典树)
题目链接:https://vjudge.net/problem/HDU-1247 题意:给定n个字符串(n<=50000),判断其中哪些字符串恰能由另外两个不同的字符串连接而成. 思路: 暴力字 ...
- [转帖]InnoDB与MyISAM等存储引擎对比
InnoDB与MyISAM等存储引擎对比 https://blog.ouyangsihai.cn/innodb-yu-myisam-deng-cun-chu-yin-qing-dui-bi.html ...
- python 之 数据库(视图、触发器、事务、存储过程)
10.13 视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 视图记录的增.删 ...
- Python进阶:聊协程
从一个爬虫说起 Python 2 的时代使用生成器协程,Python 3.7 提供了新的基于 asyncio 和 async / await 的方法.先看一个简单的爬虫代码,爬虫的 scrawl_pa ...
- Go实战--golang中使用redis(redigo和go-redis/redis)
开源库redigo的使用 github地址: https://github.com/garyburd/redigo 文档地址: http://godoc.org/github.com/garyburd ...
- Linux上安装pstree命令(-bash: pstree: command not found)
一.pstree命令的安装 1.在 Mac OS上 brew install pstree 2.在 Fedora/Red Hat/CentOS yum -y install psmisc 3.在 Ub ...
- An unavoidable detour for home CodeForces - 814E (dp)
大意: 给定一棵树每个点的度数, 求所有满足条件的树的个数 每个点到$1$的最短路唯一 假设$l_i$为点$i$到$1$的最短距离, 那么$l_i\ge l_{i-1}$ 每个点度数范围$2\le d ...
- 测试库异常down分析(abnormal instance termination)
客户测试库,down问题分析,根据alert 的问题指向,实例异常终止,但是无其它有价值的信息 Terminating the Instance Due to Error Out-Of-Memory( ...
- Consul基本使用
原文: Consul基本使用 date: 2019-05-13 17:01:37 前言 官网介绍Consul是一个分布式服务网格(Service Mesh)解决方案... 而我目前的理解是提供了分布式 ...
- springboot接收date类型参数
springboot接收日期类型参数,实现自动转换. 1. 当请求类型为json,date类型字段为 json 字段时,可以使用如下两种方法 1.1. 当前参数加两个注解(有些文章说接收只需要加 @D ...