Quality Profiles

API for managing SonarQube quality profiles.

Quality Profiles API for SonarQube SDK.

This module provides methods to manage SonarQube quality profiles.

Example

Using the Quality Profiles API:

from sonarqube import SonarQubeClient

client = SonarQubeClient(base_url="...", token="...")

# List quality profiles
profiles = client.qualityprofiles.search()
for profile in profiles.profiles:
    print(f"{profile.name} ({profile.language})")
class sonarqube.api.qualityprofiles.QualityProfilesAPI(client)[source]

Bases: BaseAPI

API for managing SonarQube quality profiles.

Quality profiles are collections of rules that define coding standards for a specific language. This API provides methods to create, update, and manage quality profiles.

API_PATH

Base path for quality profiles API (“/api/qualityprofiles”).

Example

Using the quality profiles API:

# Search quality profiles
profiles = client.qualityprofiles.search(language="py")

# Activate a rule
client.qualityprofiles.activate_rule(
    key="py-my-profile-12345", rule="python:S1234"
)
Parameters:

client (HTTPClient)

activate_rule(key, rule, params=None, reset=None, severity=None)[source]

Activate a rule in a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • key (str) – Quality profile key.

  • rule (str) – Rule key.

  • params (Optional[str], default: None) – Activation parameters.

  • reset (Optional[bool], default: None) – Reset to default values.

  • severity (Optional[str], default: None) – Rule severity.

Return type:

None

Example

>>> client.qualityprofiles.activate_rule(
...     key="py-my-profile-12345", rule="python:S1234", severity="MAJOR"
... )
activate_rules(target_key, active_severities=None, asc=None, available_since=None, inheritance=None, is_template=None, languages=None, q=None, qprofile=None, repositories=None, rule_key=None, s=None, severities=None, statuses=None, tags=None, target_severity=None, template_key=None, types=None)[source]

Bulk activate rules in a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • target_key (str) – Target quality profile key.

  • active_severities (Optional[list[str]], default: None) – Filter by active severities.

  • asc (Optional[bool], default: None) – Ascending sort order.

  • available_since (Optional[str], default: None) – Filter by availability date.

  • inheritance (Optional[list[str]], default: None) – Filter by inheritance.

  • is_template (Optional[bool], default: None) – Filter template rules.

  • languages (Optional[list[str]], default: None) – Filter by languages.

  • q (Optional[str], default: None) – Search query.

  • qprofile (Optional[str], default: None) – Source quality profile key.

  • repositories (Optional[list[str]], default: None) – Filter by repositories.

  • rule_key (Optional[str], default: None) – Filter by rule key.

  • s (Optional[str], default: None) – Sort field.

  • severities (Optional[list[str]], default: None) – Filter by severities.

  • statuses (Optional[list[str]], default: None) – Filter by statuses.

  • tags (Optional[list[str]], default: None) – Filter by tags.

  • target_severity (Optional[str], default: None) – Severity to set on activated rules.

  • template_key (Optional[str], default: None) – Filter by template key.

  • types (Optional[list[str]], default: None) – Filter by types.

Return type:

dict[str, Any]

Returns:

Response containing activation results.

Example

>>> result = client.qualityprofiles.activate_rules(
...     target_key="py-my-profile-12345", languages=["py"]
... )
add_project(key, project)[source]

Associate a project with a quality profile.

Requires ‘Administer’ permission on the project.

Parameters:
  • key (str) – Quality profile key.

  • project (str) – Project key.

Return type:

None

Example

>>> client.qualityprofiles.add_project(
...     key="py-my-profile-12345", project="my-project"
... )
backup(language, quality_profile)[source]

Backup a quality profile as XML.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • language (str) – Language key.

  • quality_profile (str) – Quality profile name.

Return type:

str

Returns:

XML backup content.

Example

>>> backup = client.qualityprofiles.backup(
...     language="py", quality_profile="My Profile"
... )
changelog(language=None, p=None, ps=None, quality_profile=None, since=None, to=None)[source]

Get changelog for a quality profile.

Requires ‘Browse’ permission on the quality profile.

Parameters:
  • language (Optional[str], default: None) – Language key.

  • p (Optional[int], default: None) – Page number.

  • ps (Optional[int], default: None) – Page size.

  • quality_profile (Optional[str], default: None) – Quality profile name.

  • since (Optional[str], default: None) – Start date for changelog.

  • to (Optional[str], default: None) – End date for changelog.

Return type:

QualityProfileChangelogResponse

Returns:

Response containing changelog entries.

Example

>>> changelog = client.qualityprofiles.changelog(
...     language="py", quality_profile="My Profile"
... )
change_parent(language, quality_profile, parent_quality_profile=None)[source]

Change parent of a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • language (str) – Language key.

  • quality_profile (str) – Quality profile name.

  • parent_quality_profile (Optional[str], default: None) – Parent quality profile name.

Return type:

None

Example

>>> client.qualityprofiles.change_parent(
...     language="py",
...     quality_profile="My Profile",
...     parent_quality_profile="Sonar way",
... )
copy(from_key, to_name)[source]

Copy a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • from_key (str) – Source quality profile key.

  • to_name (str) – Name for the new profile.

Return type:

QualityProfileCreateResponse

Returns:

Response containing the new quality profile.

Example

>>> profile = client.qualityprofiles.copy(
...     from_key="py-sonar-way-12345", to_name="My Custom Profile"
... )
create(language, name)[source]

Create a new quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • language (str) – Language key.

  • name (str) – Quality profile name.

Return type:

QualityProfileCreateResponse

Returns:

Response containing the created profile.

Example

>>> profile = client.qualityprofiles.create(language="py", name="My Custom Profile")
deactivate_rule(key, rule)[source]

Deactivate a rule in a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • key (str) – Quality profile key.

  • rule (str) – Rule key.

Return type:

None

Example

>>> client.qualityprofiles.deactivate_rule(
...     key="py-my-profile-12345", rule="python:S1234"
... )
deactivate_rules(target_key, active_severities=None, asc=None, available_since=None, inheritance=None, is_template=None, languages=None, q=None, qprofile=None, repositories=None, rule_key=None, s=None, severities=None, statuses=None, tags=None, template_key=None, types=None)[source]

Bulk deactivate rules in a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • target_key (str) – Target quality profile key.

  • active_severities (Optional[list[str]], default: None) – Filter by active severities.

  • asc (Optional[bool], default: None) – Ascending sort order.

  • available_since (Optional[str], default: None) – Filter by availability date.

  • inheritance (Optional[list[str]], default: None) – Filter by inheritance.

  • is_template (Optional[bool], default: None) – Filter template rules.

  • languages (Optional[list[str]], default: None) – Filter by languages.

  • q (Optional[str], default: None) – Search query.

  • qprofile (Optional[str], default: None) – Source quality profile key.

  • repositories (Optional[list[str]], default: None) – Filter by repositories.

  • rule_key (Optional[str], default: None) – Filter by rule key.

  • s (Optional[str], default: None) – Sort field.

  • severities (Optional[list[str]], default: None) – Filter by severities.

  • statuses (Optional[list[str]], default: None) – Filter by statuses.

  • tags (Optional[list[str]], default: None) – Filter by tags.

  • template_key (Optional[str], default: None) – Filter by template key.

  • types (Optional[list[str]], default: None) – Filter by types.

Return type:

dict[str, Any]

Returns:

Response containing deactivation results.

Example

>>> result = client.qualityprofiles.deactivate_rules(
...     target_key="py-my-profile-12345", tags=["deprecated"]
... )
delete(language, quality_profile)[source]

Delete a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • language (str) – Language key.

  • quality_profile (str) – Quality profile name.

Return type:

None

Example

>>> client.qualityprofiles.delete(language="py", quality_profile="My Profile")
inheritance(language, quality_profile)[source]

Get inheritance information for a quality profile.

Parameters:
  • language (str) – Language key.

  • quality_profile (str) – Quality profile name.

Return type:

QualityProfileInheritanceResponse

Returns:

Response containing inheritance information.

Example

>>> inheritance = client.qualityprofiles.inheritance(
...     language="py", quality_profile="My Profile"
... )
projects(key, p=None, ps=None, q=None, selected=None)[source]

Get projects using a quality profile.

Requires ‘Browse’ permission on the quality profile.

Parameters:
  • key (str) – Quality profile key.

  • p (Optional[int], default: None) – Page number.

  • ps (Optional[int], default: None) – Page size.

  • q (Optional[str], default: None) – Search query for project name.

  • selected (Optional[str], default: None) – Filter selection (all, selected, deselected).

Return type:

QualityProfileProjectsResponse

Returns:

Response containing projects.

Example

>>> projects = client.qualityprofiles.projects(key="py-my-profile-12345")
remove_project(key, project)[source]

Remove project association from a quality profile.

Requires ‘Administer’ permission on the project.

Parameters:
  • key (str) – Quality profile key.

  • project (str) – Project key.

Return type:

None

Example

>>> client.qualityprofiles.remove_project(
...     key="py-my-profile-12345", project="my-project"
... )
rename(key, name)[source]

Rename a quality profile.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • key (str) – Quality profile key.

  • name (str) – New name.

Return type:

None

Example

>>> client.qualityprofiles.rename(
...     key="py-my-profile-12345", name="New Profile Name"
... )
search(defaults=None, language=None, project=None, quality_profile=None)[source]

Search for quality profiles.

Parameters:
  • defaults (Optional[bool], default: None) – Filter by default profiles.

  • language (Optional[str], default: None) – Filter by language.

  • project (Optional[str], default: None) – Filter by project.

  • quality_profile (Optional[str], default: None) – Filter by profile name.

Return type:

QualityProfileSearchResponse

Returns:

Response containing quality profiles.

Example

>>> response = client.qualityprofiles.search(language="py")
>>> for profile in response.profiles:
...     print(f"{profile.name} ({profile.language})")
set_default(language, quality_profile)[source]

Set a quality profile as the default.

Requires ‘Administer Quality Profiles’ permission.

Parameters:
  • language (str) – Language key.

  • quality_profile (str) – Quality profile name.

Return type:

None

Example

>>> client.qualityprofiles.set_default(language="py", quality_profile="My Profile")
show(key=None, compare_to_sonar_way=None)[source]

Get quality profile details.

Parameters:
  • key (Optional[str], default: None) – Quality profile key.

  • compare_to_sonar_way (Optional[bool], default: None) – Compare to Sonar way.

Return type:

QualityProfileShowResponse

Returns:

Response containing quality profile details.

Example

>>> profile = client.qualityprofiles.show(key="py-my-profile-12345")

Models

Pydantic models for Quality Profiles API.

This module provides models for the /api/qualityprofiles endpoints including creating, updating, and managing quality profiles.

Example

Using quality profile models:

from sonarqube.models.qualityprofiles import QualityProfileSearchResponse

response = client.qualityprofiles.search()
for profile in response.profiles:
    print(f"{profile.name} ({profile.language})")
class sonarqube.models.qualityprofiles.QualityProfile(**data)[source]

Bases: SonarQubeModel

A SonarQube quality profile.

key

Quality profile key.

name

Quality profile name.

language

Language key.

language_name

Language display name.

is_inherited

Whether this is inherited.

is_default

Whether this is the default.

is_built_in

Whether this is built-in.

active_rule_count

Number of active rules.

active_deprecated_rule_count

Number of deprecated active rules.

rules_updated_at

Date rules were last updated.

last_used

Date profile was last used.

user_updated_at

Date profile was last updated by user.

Example

>>> profile = QualityProfile(
...     key="py-my-profile-12345",
...     name="My Python Profile",
...     language="py",
...     languageName="Python",
... )
Parameters:
  • data (Any)

  • key (str)

  • name (str)

  • language (str)

  • languageName (str | None)

  • isInherited (bool | None)

  • isDefault (bool | None)

  • isBuiltIn (bool | None)

  • parentKey (str | None)

  • parentName (str | None)

  • activeRuleCount (int | None)

  • activeDeprecatedRuleCount (int | None)

  • rulesUpdatedAt (str | None)

  • lastUsed (str | None)

  • userUpdatedAt (str | None)

  • projectCount (int | None)

  • actions (dict[str, Any] | None)

key: str
name: str
language: str
language_name: Optional[str]
is_inherited: Optional[bool]
is_default: Optional[bool]
is_built_in: Optional[bool]
parent_key: Optional[str]
parent_name: Optional[str]
active_rule_count: Optional[int]
active_deprecated_rule_count: Optional[int]
rules_updated_at: Optional[str]
last_used: Optional[str]
user_updated_at: Optional[str]
project_count: Optional[int]
actions: Optional[dict[str, Any]]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.QualityProfileSearchResponse(**data)[source]

Bases: SonarQubeModel

Response from searching quality profiles.

profiles

List of quality profiles.

actions

Available actions.

Example

>>> response = client.qualityprofiles.search()
>>> for profile in response.profiles:
...     print(f"{profile.name} ({profile.language})")
Parameters:
profiles: list[QualityProfile]
actions: Optional[dict[str, Any]]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.QualityProfileCreateResponse(**data)[source]

Bases: SonarQubeModel

Response from creating a quality profile.

profile

Created quality profile.

warnings

List of warnings.

infos

List of info messages.

Parameters:
  • data (Any)

  • profile (QualityProfile)

  • warnings (list[str] | None)

  • infos (list[str] | None)

profile: QualityProfile
warnings: Optional[list[str]]
infos: Optional[list[str]]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.QualityProfileShowResponse(**data)[source]

Bases: SonarQubeModel

Response from showing a quality profile.

profile

Quality profile details.

Parameters:
  • data (Any)

  • profile (QualityProfile)

profile: QualityProfile
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.QualityProfileInheritanceResponse(**data)[source]

Bases: SonarQubeModel

Response from getting quality profile inheritance.

profile

Profile details.

ancestors

Ancestor profiles.

children

Child profiles.

Parameters:
  • data (Any)

  • profile (QualityProfile)

  • ancestors (list[QualityProfile] | None)

  • children (list[QualityProfile] | None)

profile: QualityProfile
ancestors: Optional[list[QualityProfile]]
children: Optional[list[QualityProfile]]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.QualityProfileChangelogEntry(**data)[source]

Bases: SonarQubeModel

A changelog entry for a quality profile.

date

Date of the change.

author_login

Author login.

author_name

Author name.

action

Action performed.

rule_key

Rule key.

rule_name

Rule name.

params

Changed parameters.

Parameters:
  • data (Any)

  • date (str)

  • authorLogin (str | None)

  • authorName (str | None)

  • action (str | None)

  • ruleKey (str | None)

  • ruleName (str | None)

  • params (dict[str, Any] | None)

date: str
author_login: Optional[str]
author_name: Optional[str]
action: Optional[str]
rule_key: Optional[str]
rule_name: Optional[str]
params: Optional[dict[str, Any]]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.QualityProfileChangelogResponse(**data)[source]

Bases: SonarQubeModel

Response from getting quality profile changelog.

events

List of changelog entries.

paging

Paging information.

Parameters:
  • data (Any)

  • events (list[QualityProfileChangelogEntry])

  • paging (dict[str, Any] | None)

  • p (int | None)

  • ps (int | None)

  • total (int | None)

events: list[QualityProfileChangelogEntry]
paging: Optional[dict[str, Any]]
p: Optional[int]
ps: Optional[int]
total: Optional[int]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.QualityProfileProjectsResponse(**data)[source]

Bases: SonarQubeModel

Response from getting projects using a quality profile.

paging

Paging information.

results

List of projects.

Parameters:
paging: Optional[dict[str, Any]]
results: list[dict[str, Any]]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sonarqube.models.qualityprofiles.RuleActivation(**data)[source]

Bases: SonarQubeModel

A rule activation in a quality profile.

qProfile

Quality profile key.

inherit

Inheritance status.

severity

Rule severity.

params

Activation parameters.

Parameters:
q_profile: str
inherit: Optional[str]
severity: Optional[str]
params: Optional[list[dict[str, Any]]]
model_config: ClassVar[ConfigDict] = {'extra': 'ignore', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].