您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Python操作Sonqube API如何獲取檢測結(jié)果并打印的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
python的五大特點:1.簡單易學,開發(fā)程序時,專注的是解決問題,而不是搞明白語言本身。2.面向?qū)ο螅c其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現(xiàn)面向?qū)ο缶幊獭?.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
1.需求:每次Sonqube檢查完畢后,需要登陸才能看到結(jié)果無法通過Jenkins發(fā)布后直接看到bug 及漏洞數(shù)量。
2.demo:發(fā)布后,可以將該項目的檢測結(jié)果簡單打印出來顯示,后面還可以集成釘釘發(fā)送到群里。
# -*- 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傳入第一個參數(shù)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 = 'https://cache.yisu.com/upload/information/20200622/113/18428.png' code_reslut= "Bug數(shù):" + bug + "個," + \ "漏洞數(shù):" + leak + "個," + \ "可能存在問題代碼:"+ code_smell + "行," + \ "覆蓋率:" + coverage + "%," + \ "重復率:" + density + "%" print("靜態(tài)代碼掃描統(tǒng)計:"+"狀態(tài):"+ status +","+code_reslut) if int(bug)>=3: print("bug 數(shù)量太多,請盡快修復再發(fā)布項目!") sys.exit(1) else: print("代碼質(zhì)量非常好") if __name__=="__main__": #sonarQube刷新結(jié)果 #time.sleep(10) notification(projectName)
感謝各位的閱讀!關于“Python操作Sonqube API如何獲取檢測結(jié)果并打印”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。