定制 forgeqc/sonarqube-api-client 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

forgeqc/sonarqube-api-client

Composer 安装命令:

composer require forgeqc/sonarqube-api-client

包简介

A simple PHP client for sonarqube and sonarcloud.io API

README 文档

README

Build Status Sonarcloud Status

PHP client library for Sonarqube API access from a PHP project. The library has been extensively tested with sonarqube and sonarcloud.io as it is fully compatible with sonarcloud.io organizations.

Installation

Via composer

composer require forgeqc/sonarqube-api-client

General API Usage

List all projects of a Sonarqube instance

The getprojects() function returns an array containing all the projects of a sonarqube instance. The example below retrieves all projects from [https://sonarcloud.io].

require '../vendor/autoload.php';

use Forge\SonarqubeApiClient\HttpClient;
use Forge\SonarqubeApiClient\SonarqubeProject;
use Forge\SonarqubeApiClient\SonarqubeInstance;

$api = new HttpClient('https://sonarcloud.io/api/');

$instance = new SonarqubeInstance($api);
$projects = $instance->getProjects();

Manage a single Sonarqube project

The SonarqubeProject class allows creation of a new sonarqube project or metadata / measures extraction from an existing sonarqube project.

Create sonarqube project

require '../vendor/autoload.php';

use Forge\SonarqubeApiClient\HttpClient;
use Forge\SonarqubeApiClient\SonarqubeProject;
use Forge\SonarqubeApiClient\SonarqubeInstance;

$api = new HttpClient('https://sonarcloud.io/api/', '<secret token>');

$projectKey = 'testProjectFromApi';
$project = new SonarqubeProject($api, $projectKey);

if (!$project->exists()) {
  $project->create('Test Project From Api', 'public', 'testapi');
}

Get projet measures

Get default list of measures. Without any parameter, the functions return mesures for the following metric keys : alert_status,bugs,reliability_rating,vulnerabilities,security_rating,code_smells,sqale_rating,duplicated_lines_density,coverage,ncloc,ncloc_language_distribution,reliability_remediation_effort,security_remediation_effort . Metric keys list match the one used by Sonarqube to display the project dashboard.

$measures = $project->getMeasures();
$measuresHistory = $project->getMeasuresHistory('2019-06-45');

Add the list of desired metric keys to customize measures returned by the function.

$measures = $project->getMeasures('sqale_index');
$measuresHistory = $project->getMeasuresHistory('2019-06-45', 'sqale_index');

Get measures of multiple sonarqube projects

The SonarqubeInstance::getMultipleProjectsMeasures function retrieves measures for a list of sonarqube projects. Maximum number of projects is 100.

Add the list of desired metric keys to customize measures returned by the function.

$api = new HttpClient('https://sonarcloud.io/api/');
$instance = new SonarqubeInstance($api);

$measures = $instance->getMultipleProjectsMeasures('Board-Voting,paysuper_paysuper-currencies');

$measures =  $instance->getMultipleProjectsMeasures('Board-Voting,paysuper_paysuper-currencies','sqale_index');

Aggregate measures of multiple sonarqube projects

The SonarqubeInstance::aggregateMultipleProjectsMeasures function aggregates measures for a list of sonarqube projects. This function is useful for measures aggregation of a project portfolio. Maximum number of projects is 100.

Function algorithm implements Sonarqube Enterprise project portfolio measures aggregation logic described on (https://docs.sonarqube.org/latest/user-guide/portfolios/).

$api = new HttpClient('https://sonarcloud.io/api/');
$instance = new SonarqubeInstance($api);

$measures = $instance->aggregateMultipleProjectsMeasures('Board-Voting,paysuper_paysuper-currencies');

Manage users, groups, and permissions

Create or deactivate a Sonarqube user :

$api = new HttpClient('https://sonarcloud.io/api/', $sonar_api_key);
$instance = new SonarqubeInstance($api);

//Test if user exists
if($instance->userExists('joe')) {
  //Update user data
  $instance->updateUser('jdoe', 'John DOE', 'john.doe@contoso.com');
}
else {
  //Create user or activate existing deactivated user
  $instance->createUser('jdoe', 'John DOE', 'john.doe@contoso.com');
}

//Deactivate user
 $instance->deactivateUser('jdoe');

Create or delete a Sonarqube group :

$api = new HttpClient('https://sonarcloud.io/api/', $sonar_api_key);
$sonarcloudOrganization = 'testapi';
$instance = new SonarqubeInstance($api, $sonarcloudOrganization);

//Group creation
$group = $instance->createGroup('TestGroup');

//Group deletion
$result = $instance->deleteGroup('TestGroup');

Grant project permissions to a user or a group. The library provides functions to add or remove projects permissions. The codeviewer and user permissions can't be removed from a public project. Functions return true if permissions are successfully granted or removed.

$api = new HttpClient('https://sonarcloud.io/api/', $sonar_api_key);
$sonarcloudOrganization = 'testapi';

//Grant permission on testProjectFromApi project in 'testapi' sonarcloud.io organization
$projectKey = 'testProjectFromApi';
$project = new SonarqubeProject($api, $projectKey, $sonarcloudOrganization);

//Grant project permissions to a group
$testGroup = 'TestGroupPermissions';

$project->addGroupPermission($testGroup, 'admin');
$project->addGroupPermission($testGroup, 'codeviewer');
$project->addGroupPermission($testGroup, 'issueadmin');
$project->addGroupPermission($testGroup, 'securityhotspotadmin');
$project->addGroupPermission($testGroup, 'scan');
$project->addGroupPermission($testGroup, 'user');

$project->removeGroupPermission($testGroup, 'admin');
$project->removeGroupPermission($testGroup, 'issueadmin');
$project->removeGroupPermission($testGroup, 'securityhotspotadmin');
$project->removeGroupPermission($testGroup, 'scan');

//Grant project permissions to a user
$project->addUserPermission($testUser, 'admin');
$project->addUserPermission($testUser, 'codeviewer')
$project->addUserPermission($testUser, 'issueadmin');
$project->addUserPermission($testUser, 'securityhotspotadmin');
$project->addUserPermission($testUser, 'scan');
$project->addUserPermission($testUser, 'user');

$project->removeUserPermission($testUser, 'admin');
$project->removeUserPermission($testUser, 'issueadmin');
$project->removeUserPermission($testUser, 'securityhotspotadmin');
$project->removeUserPermission($testUser, 'scan');

Contributing

This project is currently under development. Feel free to fork this project, apply modifications and send pull requests. SonarQube official API is not part of this project.

forgeqc/sonarqube-api-client 适用场景与选型建议

forgeqc/sonarqube-api-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.78k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2019 年 06 月 13 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「api」 「client」 「sonarqube」 「sonarcloud」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 forgeqc/sonarqube-api-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 forgeqc/sonarqube-api-client 我们能提供哪些服务?
定制开发 / 二次开发

基于 forgeqc/sonarqube-api-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 3.78k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 12
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-06-13