Skip to main content
https://img.shields.io/github/license/kako-nawao/python-sonarqube-api.svg https://img.shields.io/pypi/pyversions/sonarqube-api.svg https://img.shields.io/pypi/v/sonarqube-api.svg https://img.shields.io/travis/kako-nawao/python-sonarqube-api.svg https://img.shields.io/codecov/c/github/kako-nawao/python-sonarqube-api.svg

API Handler for SonarQube web service, providing basic authentication (which seems to be the only kind that SonarQube supports) and a few methods to fetch metrics and rules, as well as methods to create rules and (soon) profiles.

Installation

Install from PyPI:

pip install sonarqube-api

Compatibility

This package is compatible Python versions 2.7, 3.4, 3.5 and 3.6. Probably others, but those are the ones against which we build (by Travis CI).

Usage

The API handler is easy to use, you just need to initialize it with the connection parameters (by default localhost on port 9000 without authentication) and use any of the methods to get the required information or create rules.

Example getting projects with coverage and issues metrics:

from sonarqube_api import SonarAPIHandler

h = SonarAPIHandler(user='admin', password='admin')
for project in h.get_resources_full_data(metrics=['coverage', 'violations']):
    # do something with project data...

Since the actual response data from SonarQube server is usually paged, all methods return generators to optimize memory as well retrieval performance of the first items.

You can also specify a single resources to fetch, but keep in mind that the resource methods return generators, so you still need to get the next object:

proj = next(h.get_resources_full_data(resource='some:example'))

Sonar authentication tokens can also be used in place of username and password, which is particularly useful when accessing the SonarQube API from a CI server, as tokens can easily be revoked in the event of unintended exposure:

h = SonarAPIHandler(token='f052f55b127bb06f63c31cb2064ea301048d9e5d')

Supported Methods

The methods supported by the SonarAPIHandler are:

  • activate_rule: activate a rule for a given profile in the server

  • create_rule: create a rule in the server

  • get_metrics: yield metrics definition

  • get_rules: yield active rules

  • get_resources_debt: yield projects with their technical debt by category

  • get_resources_metrics: yield projects with some general metrics

  • get_resources_full_data: yield projects with their general metrics and technical debt by category (merge of previous two methods)

  • validate_authentication: validate authentication credentials

Commands

The package also provides a few commands you can use from the shell to export or migrate rules in SonarQube servers.

Export Rules

The command export-sonarqube-rules reads the rules in a SonarQube server and creates two files with their data. One is a csv with a snapshot of the rule (including key, name, status, etc) and the other one is an html with all the information, including description and examples.

The command uses sensible defaults, so the following:

export-sonarqube-rules

Will export all rules on the server running at localhost:9000 into the files rules.csv and rules.html on your home directory.

But you can change the host, authentication, or filter the rules with a number of available options:

export-sonarqube-rules --host=http://sonar.example.com --user=admin --active-only --languages=py,js

For the complete set of export options run:

export-sonarqube-rules -h

Activate Rules

The command activate-sonarqube-rules reads an input csv file and activates the rules on a SonarQube server for a quality profile, according to the definitions on the file.

The command requires a profile key and a file name:

activate-sonarqube-rules py-test-18349 active-rules.csv

As usual, you can customize all the server connection parameters, which you can view with the help command:

activate-sonarqube-rules -h

The file can be very simple: the only required field in the file is key (for the rule key), but you can also define the severity and customize any parameter such as xpathQuery, message, format… anything at all. You can also use reset (which takes values true/yes) to force using defaults for all values–for which rule all other params will be ignored.

Migrate Rules

The command migrate-sonarqube-rules reads the custom rules in a SonarQube server (the source) and tries to recreate them in another SonarQube server (the target). Since by default it uses localhost for both source and target, you’ll need to specify at least one of the hosts.

For example, to copy all custom rules defined in server sonar.from.com to server sonar.to.com, you would execute:

migrate-sonarqube-rules --source-host=http://sonar.from.com --target-host=http://sonar.to.com

As with the previous command, you can specify all the connection options (--source-port, --target-port, --source-user, etc).

For the complete set of export options run:

migrate-sonarqube-rules -h

Release files for opn-sonarqube-api 1.7.1.629488

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for opn-sonarqube-api 1.7.1.629488
File Size Uploaded
opn_sonarqube_api-1.7.1.629488.tar.gz 21.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for opn-sonarqube-api 1.7.1.629488
File Interpreter ABI Platform
opn_sonarqube_api-1.7.1.629488-py2-none-any.whl Python 2 none any Details

Total release size: 43.2 kB

Release files / opn_sonarqube_api-1.7.1.629488.tar.gz

Download URL opn_sonarqube_api-1.7.1.629488.tar.gz
Size 21.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a1b3e1902b9d0d0e53527b88114a05ecb8aaff2e16bdc5fd61b86828d06298b0
BLAKE2b-256 checksum
How to use checksums
fbd889641176269ed60e0b9f07af3f29a30493cd3eade55d716cb336f0380ea8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/2.7.18

Release files / opn_sonarqube_api-1.7.1.629488-py2-none-any.whl

Download URL opn_sonarqube_api-1.7.1.629488-py2-none-any.whl
Size 21.7 kB
Tags Python 2
SHA-256 checksum
How to use checksums
7e1c8f06aee9cd3bda6b0df3ce80b2c52550220cb51966f95caa23ed4311a64c
BLAKE2b-256 checksum
How to use checksums
01fa424b7df378cb8d91736d46c3bb538b99b2b5a60afa6d18243eb306af369e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/2.7.18
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page