Python操作Sonqube API獲取檢測結果並列印過程解析
阿新 • • 發佈:2020-01-09
這篇文章主要介紹了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)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。