Python 操作Sonqube API 获取检测结果并打印

1.需求:每次Sonqube检查完毕后,需要登陆才能看到结果无法通过Jenkins发布后直接看到bug 及漏洞数量。

2.demo:发布后,可以将该项目的检测结果简单打印出来显示,后面还可以集成钉钉发送到群里。

 1 # -*- coding: UTF-8 -*-
 2 import sys
 3 reload(sys)
 4 sys.setdefaultencoding(‘utf8‘)
 5
 6 ‘‘‘
 7 @author:jmmei
 8 @file: SonarQubeDingtalk.py
 9 @time: 2019/7
10 ‘‘‘
11 import  requests,json,jenkins,os,time,datetime
12
13
14
15
16 #通过jenkins变量JOB_NAME传入第一个参数projectName
17
18 projectName=sys.argv[1]
19
20 def notification(projectName):
21     # sonar API
22     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‘
23     resopnse = requests.get(sonar_Url).text
24     result = json.loads(resopnse)
25     bug = 0
26     leak = 0
27     code_smell = 0
28     coverage = 0
29     density = 0
30     status = ‘‘
31     statusStr = ‘‘
32
33     for item in result[‘measures‘]:
34         if item[‘metric‘]=="bugs":
35             bug = item[‘value‘]
36         elif item[‘metric‘]=="vulnerabilities":
37             leak = item[‘value‘]
38         elif item[‘metric‘]==‘code_smells‘:
39             code_smell = item[‘value‘]
40         elif item[‘metric‘]==‘coverage‘:
41             coverage = item[‘value‘]
42         elif item[‘metric‘]==‘duplicated_lines_density‘:
43             density = item[‘value‘]
44         elif item[‘metric‘]==‘alert_status‘:
45             status = item[‘value‘]
46         else:
47             pass
48
49     if status == ‘ERROR‘:
50         messageUrl = ‘http://www.iconsdb.com/icons/preview/soylent-red/x-mark-3-xxl.png‘
51         statusStr = ‘失败‘
52     elif status == ‘OK‘:
53         statusStr = ‘成功‘
54         messageUrl = ‘http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png‘
55
56     code_reslut=  "Bug数:" + bug + "个," + 57                   "漏洞数:" + leak + "个," + 58                   "可能存在问题代码:"+ code_smell + "行," + 59                   "覆盖率:" + coverage + "%," + 60                   "重复率:" + density + "%"
61     print("静态代码扫描统计:"+"状态:"+ status +","+code_reslut)
62     if int(bug)>=3:
63         print("bug 数量太多,请尽快修复再发布项目!")
64         sys.exit(1)
65     else:
66         print("代码质量非常好")
67
68
69
70
71 if __name__=="__main__":
72     #sonarQube刷新结果
73     #time.sleep(10)
74     notification(projectName)
75     

原文地址:https://www.cnblogs.com/Jame-mei/p/11936934.html

时间: 2024-10-14 01:28:11

Python 操作Sonqube API 获取检测结果并打印的相关文章

Python 操作 GA API 指南

因为需要写一个 Blog Feature 的缘故,所以接触了下 GA 的 Python API,发现 G 家的 API 不是那么直观,比较绕,但是,在使用过程中发现其实 G 家的 API 设计挺有意思的,可能有一些新的设计理念,值得思考学习一番.但是这不是这篇文章的重点,这篇文章还是介绍一下 GA 的 Python API V4 版本的使用,顺带在最后解答几个我再使用过程中遇到的问题. GA API 使用入门 目前 GA 的 API 是 V4 版本,据说 V3 版本还可以使用,但是我没有尝试,为

python操作json文件获取内容

写case时,将case 写到json文件比写到,写python一定要学会处理json 以下,是要处理的json 处理操作包括:打开json文件,获取json文件内容,关闭json文件,读取内容中的对应key的value { "name": "BeJson", "url": "http://www.bejson.com", "page": 88, "isNonProfit": true,

Python——使用高德API获取POI(以深圳南山医疗保健服务POI为例)

以下内容为原创,转载请注明出处. 1 import xlwt #创建Excel,见代码行8,9,11,25,28:CMD下:运行pip install xlwt进行安装 2 import urllib.request # url请求,Python3自带,Python2与3中urllib的区别见:http://blog.csdn.net/Jurbo/article/details/52313636 3 from bs4 import BeautifulSoup # 快速获取网页标签内容的库:CMD

python操作hive并且获取查询结果scheam

执行hive -e 命令并且获取对应的select查询出来的值及其对应的scheam字段 需要在执行语句中前部添加 set hive.cli.print.header=true; 这个设置,如下语句: hive -e "set hive.cli.print.header=true;use default;select * from students" 这样最后的结果中会返回查询出来的字段值及其对应的scheam 源码参考地址:https://github.com/xjh713/hive

通过Python操作hbase api

# coding=utf-8 # Author: ruin """ discrible: """ from thrift.transport import TSocket from thrift.protocol import TBinaryProtocol from thrift.transport import TTransport from hbase import Hbase import struct # Method for enco

Python 操作Redis

redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性

借助Sigar API获取操作系统信息

Sigar(全称System Information Gatherer And Reporter,即系统信息收集报表器),它提供了一个开源的跨平台的收集计算机硬件和操作系统信息的API(该API底层接口用C语言编写),本文将演示如何借助Sigar API获取操作系统信息: package com.ghj.packageoftest; import java.net.InetAddress; import org.hyperic.sigar.OperatingSystem; import org.

python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库

前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用的IDE是 “神奇” 的 pycharm: 1. 首先新建一个python的项目,并且安装 “mysql-connector-python”. “mysql-connector-python” 是MySQL官方对于python的数据驱动,感兴趣的童鞋可以移步这里: https://dev.mysql

Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memc