Python调取Sonar API获取对应数据

简介: Python调取Sonar API获取对应数据

找了很多Sonar的Python封装,发现都不好用,因此自己做了小封装。具体如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@File    :   sonar_snapshot.py
@Time    :   2021/12/14 14:27:42
@Author  :   CrissChan 
@Version :   1.0
@Site    :   https://blog.csdn.net/crisschan
@Desc    :   for the sonarqube's Measures
'''
# here put the import lib
import requests
from requests.models import HTTPBasicAuth
import json
class SonarSnapshot(object):
    def __init__(self,usrname,pwd,sonar_uri) -> None:
        super().__init__()
        # self.usrname = usrname
        # self.pwd = pwd
        self.auth = HTTPBasicAuth(usrname,pwd)
        self.sonar_uri = sonar_uri
        # self.sonar_authon = self.sonar_uri+'/api/authentication/login'
    def get_issues(self,componentskey,types='BUG,VULNERABILITY'):
        '''
        des 查询指定项目的 issues
        params:
            componentskey:查询的项目
            types:CODE_SMELL,BUG,VULNERABILITY 一个或者多个,多个用英文都号分割。
        '''
        issue_url =  self.sonar_uri+'/api/issues/search?componentKeys='+componentskey+'&types='+types
        res = requests.get(issue_url,auth = self.auth)
        res_json = json.loads(res.text)
        page_size= res_json['paging']['pageSize']
        total= res_json['paging']['total']
        page_count = total/page_size+1
        page_number = 0
        issue_list=[]
        while page_number<page_count:
            purl = issue_url+'&p='+str(page_number+1)
            res_issue = requests.get(purl,auth = self.auth)
            # print(res_issue.text)
            issue_list=issue_list+json.loads(res_issue.text)['issues']
            page_number=page_number+1
        return (issue_list)
        # return res_json
    def get_measures(self,componentskey,metirc_keys='alert_status,bugs,reliability_rating,vulnerabilities,security_rating,code_smells,sqale_rating,duplicated_lines_density,coverage,ncloc,ncloc_language_distribution,complexity'):
        '''
        des 查询指定项目的metrics
        params:
            componentskey:查询的项目
            metirc_keys:度量结果
        return: 
            项目当前的度量metrics,json格式
        '''
        measure_url = self.sonar_uri+'/api/measures/component?component='+componentskey+'&metricKeys='+metirc_keys
        res = requests.get(measure_url,auth = self.auth)
        res_json = json.loads(res.text)
        return res_json
    def get_projects(self):
        '''
        按照一页100条的默认参数分页
        return 如下结构的list
        {
    "key": componentskey也是projectkey,
    "name":项目名称,
    "qualifier":TRK - for projects;APP - for applications
    "isFavorite": 是否收藏,
    "analysisDate": 最近一次分析时间
    "tags": [],
    "visibility": "public",
    "needIssueSync": false
        '''
        projects_url = self.sonar_uri+'/api/components/search_projects'
        res = requests.get(projects_url,auth = self.auth)
        res_json = json.loads(res.text)
        page_size= res_json['paging']['pageSize']
        total= res_json['paging']['total']
        page_count = total/page_size+1
        page_number = 0
        project_list=[]
        while page_number<page_count:
            purl = projects_url+'?p='+str(page_number+1)
            res_projects = requests.get(purl,auth = self.auth)
            project_list=project_list+json.loads(res_projects.text)['components']
            page_number=page_number+1
        return (project_list)
目录
相关文章
|
9天前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
28 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
9天前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
31 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
10天前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
22 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
5天前
|
Prometheus 监控 Cloud Native
如何查看商品销量 API 接口的性能指标数据?
要查看商品销量 API 接口的性能指标数据,可以通过以下几种方法:1. 使用第三方或开源 API 监控工具,如 Datadog、New Relic、Prometheus 和 Grafana;2. 在代码中手动记录时间戳或使用性能测量库;3. 查看 API 提供商的文档和报告;4. 进行负载测试,使用工具如 Apache JMeter 和 Gatling。这些方法可以帮助你全面评估 API 的性能表现。
24 2
|
5天前
|
JSON API 数据格式
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
18 1
|
6天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
25 2
|
7天前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第10天】本文介绍了OAuth 2.0和JSON Web Tokens (JWT) 两种现代Web应用中最流行的认证机制。通过使用Flask-OAuthlib和PyJWT库,详细展示了如何在Python环境中实现这两种认证方式,从而提升系统的安全性和开发效率。OAuth 2.0适用于授权过程,JWT则简化了认证流程,确保每次请求的安全性。结合两者,可以构建出既安全又高效的认证体系。
25 1
|
5天前
|
API 网络架构 Python
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
11 0
|
6天前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
9天前
|
JSON API 数据格式
使用Python构建RESTful API
【10月更文挑战第8天】使用Python构建RESTful API
17 0