zoukankan      html  css  js  c++  java
  • 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     
    http://www.cnblogs.com/Jame-mei
  • 相关阅读:
    钱多多软件制作04
    团队项目01应用场景
    HDU 4411 arrest
    HDU 4406 GPA
    HDU 3315 My Brute
    HDU 3667 Transportation
    HDU 2676 Matrix
    欧拉回路三水题 POJ 1041 POJ 2230 POJ 1386
    SPOJ 371 BOXES
    POJ 3422 Kaka's Matrix Travels
  • 原文地址:https://www.cnblogs.com/Jame-mei/p/11936934.html
Copyright © 2011-2022 走看看