当前位置: 首页 > 编程笔记 >

Python操作Sonqube API获取检测结果并打印过程解析

缑赤岩
2023-03-14
本文向大家介绍Python操作Sonqube API获取检测结果并打印过程解析,包括了Python操作Sonqube API获取检测结果并打印过程解析的使用技巧和注意事项,需要的朋友参考一下

这篇文章主要介绍了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 = 'html" target="_blank">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新手,正在尝试解决XOR CTF标志,但由于某些原因,Python不想打印任何内容。。。 非常感谢您的帮助!

  • 本文向大家介绍Python sqlite3查询操作过程解析,包括了Python sqlite3查询操作过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python sqlite3查询操作过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 记录查询操作及获取查询结果列字段的方法 1.sqlite3 中获取所有表名及各表字段名

  • 本文向大家介绍使用python远程操作linux过程解析,包括了使用python远程操作linux过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了使用python远程操作linux过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在云服务测试中,往往需要我们进入云服务内容进行相关内容的测试。这测试可以使用平台自身的noV

  • 本文向大家介绍Python API len函数操作过程解析,包括了Python API len函数操作过程解析的使用技巧和注意事项,需要的朋友参考一下 在python中除了print函数之外,len函数和type函数应该算是使用最频繁的API了,操作都比较简单。 一.len函数简介 返回对象的长度(项目数)参数可以是序列(例如字符串str、元组tuple、列表list)或集合(例如字典dict、集

  • 本文向大家介绍Python操作qml对象过程详解,包括了Python操作qml对象过程详解的使用技巧和注意事项,需要的朋友参考一下 1. 如何在python里获得qml里的对象? 1.1 获取根对象 QML: Python: 使用QQmlApplicationEngine类的rootObjects方法,返回的是一个列表,取索引0即是根对象。 这样就会获得id为window的ApplicationW

  • 问题内容: 与MySQL使用Python在控制台中打印结果一样,最简单的打印MySQL查询结果的方法是什么?例如,我想得到类似的东西: 注意:我不知道每列的最大宽度是先验的,但是我希望能够不重复两次就可以做到这一点。是否应为每列添加查询的length()?MySQL如何做到这一点,以免严重影响内存或处理时间? 编辑 我认为这与问题无关,但这是我发送的查询: 这是我使用的python代码: 但是此代