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)
目录
相关文章
|
11天前
|
人工智能 关系型数据库 MySQL
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
本文通过一个利用百炼大模型平台和Dataphin数据服务API构建一个客户360智能应用的案例,介绍如何使用Dataphin数据服务API在百炼平台创建一个自定义插件,用于智能应用的开发,提升企业智能化应用水平。
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
|
12天前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
38 3
如何使用Python开发API接口?
|
5天前
|
JSON API 数据格式
如何使用Python开发1688商品详情API接口?
本文介绍了如何使用Python开发1688商品详情API接口,获取商品的标题、价格、销量和评价等详细信息。主要内容包括注册1688开放平台账号、安装必要Python模块、了解API接口、生成签名、编写Python代码、解析返回数据以及错误处理和日志记录。通过这些步骤,开发者可以轻松地集成1688商品数据到自己的应用中。
19 1
|
8天前
|
XML 数据可视化 API
商品详情数据实战案例,API接口系列
淘宝商品详情数据在电商领域具有广泛的应用价值,而淘宝商品详情API接口则为开发者提供了获取这些数据的重要途径。通过合理利用这些接口和数据,可以提升业务效率、优化用户体验,为电商行业的发展注入新的活力。
|
12天前
|
SQL 缓存 API
在API接口数据获取过程中,如何确保数据的安全性和隐私性?
在API接口数据获取过程中,确保数据的安全性和隐私性至关重要。本文介绍了身份认证与授权、防止SQL注入和XSS攻击、加密传输、API版本控制、限流与熔断、压力测试与性能优化、备份与恢复以及法律和伦理考量等关键措施,帮助开发者和管理者有效保护API接口的数据安全和隐私性。
|
11天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
20 1
|
12天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
12天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
12天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
28 1
|
9天前
|
安全 API 网络架构
Python中哪个框架最适合做API?
本文介绍了Python生态系统中几个流行的API框架,包括Flask、FastAPI、Django Rest Framework(DRF)、Falcon和Tornado。每个框架都有其独特的优势和适用场景。Flask轻量灵活,适合小型项目;FastAPI高性能且自动生成文档,适合需要高吞吐量的API;DRF功能强大,适合复杂应用;Falcon高性能低延迟,适合快速API开发;Tornado异步非阻塞,适合高并发场景。文章通过示例代码和优缺点分析,帮助开发者根据项目需求选择合适的框架。
27 0