获取sonar7版本的代码扫描数据

def get_sonar():
    try:
        global prod_name
        url="http://xXXX:9000/api/measures/component?component={}&metricKeys=new_bugs,bugs,new_coverage,coverage," 
            "new_vulnerabilities,vulnerabilities,new_duplicated_lines_density,duplicated_lines_density".format(prod_name)
        res=requests.get(url)
        message = json.loads(res.text)
        message_tmp = message['component']['measures']
        messages = [{i['metric']: i.get('value',i.get('periods',[{'value':None}])[0]['value'])} for i in message_tmp]
        results={}
        for i in messages:
            results.update(i)
        print results
        message = 'bug:{},新增bug:{},漏洞:{},新增漏洞:{},覆盖率:{:.2f}, 重复率:{:.2f},新代码重复率:{:.2f},状态:OK'.format(results['bugs'],results['new_bugs'],
                                                                            results['vulnerabilities'],results['new_vulnerabilities'],
                                                                            float(results['coverage']),
                                                                            float(results['duplicated_lines_density']),
                                                                            float(results['new_duplicated_lines_density']))
        print message
        return message
    except Exception as e:
        return None

 获取信息并发钉钉

#coding=utf8
import requests
import json
import os
import time
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from requests.auth import HTTPBasicAuth
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
requests.packages.urllib3.disable_warnings()
time.sleep( 100 )
prod_name=os.environ.get('prod_name','')
server_ip='XXXX:9000'

def send_msg():
    global prod_name
    token=''
    url = 'http://oapi.dingtalk.com/robot/send?access_token='+token
    headers = {
        'Content-Type': 'application/json;charset=utf-8'
    }
    while 1:
        try:
            # 6.5
            if 'XXXX' in server_ip:
                msg=requests.get(url="http://XXXX:8082/?projectname="+prod_name)
            # 7.9
            if 'XXXX' in server_ip:
                msg = requests.get(url="http://{}/api/measures/component?component={}&metricKeys="
                                       "new_bugs,bugs,new_coverage,coverage,new_vulnerabilities,"
                                       "vulnerabilities,new_duplicated_lines_density,duplicated_lines_density".format(server_ip,prod_name) )
            message=msg.text
            print message
            msg_url="http://{}/dashboard?id={}".format(server_ip,prod_name)
        except Exception as e:
            print e
            pass
        if '10.1.63.97' in server_ip and '漏洞' in str(message):
            break
        if '10.1.63.96' in server_ip :
            try:
                message=json.loads(message)
                if message['component']['measures']:
                    message_tmp= message['component']['measures']
                    messages=["i['metric']:i['value']  " for i in  message_tmp]
                    message=','.join(messages)
                    break
            except Exception as e:
                print e
                pass


    print message
    title=prod_name+"代码质量报告"
    formdata = {
        "msgtype": "markdown",
        "markdown": {
            "title":prod_name+"代码质量报告",
            "text": '## {}
'.format(title)+str(message)+'
[查看报告]({})'.format(msg_url)
        }
    }
    #钉钉发报告
    #res = requests.post(url=url, data=json.dumps(formdata), headers=headers, proxies={"http": "http://XXXX:8005"},verify=False)
    #print(res.text)
    print '代码扫描完毕'

send_msg()

  

原文地址:https://www.cnblogs.com/slqt/p/13738178.html