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:
BaseAPIAPI 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:
- Return type:
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.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.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.severities (
Optional[list[str]], default:None) – Filter by severities.statuses (
Optional[list[str]], default:None) – Filter by statuses.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:
- 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.
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:
- Return type:
- 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:
- 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:
- Return type:
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:
- 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:
- 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.
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.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.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.severities (
Optional[list[str]], default:None) – Filter by severities.statuses (
Optional[list[str]], default:None) – Filter by statuses.template_key (
Optional[str], default:None) – Filter by template key.types (
Optional[list[str]], default:None) – Filter by types.
- Return type:
- 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:
- Return type:
Example
>>> client.qualityprofiles.delete(language="py", quality_profile="My Profile")
- inheritance(language, quality_profile)[source]
Get inheritance information for a quality profile.
- Parameters:
- 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:
- 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.
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.
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:
- 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:
- Return type:
Example
>>> client.qualityprofiles.set_default(language="py", quality_profile="My Profile")
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:
SonarQubeModelA 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)
- 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:
SonarQubeModelResponse 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})")
- 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:
SonarQubeModelResponse from creating a quality profile.
- profile
Created quality profile.
- warnings
List of warnings.
- infos
List of info messages.
- Parameters:
- 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:
SonarQubeModelResponse 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:
SonarQubeModelResponse from getting quality profile inheritance.
- profile
Profile details.
- ancestors
Ancestor profiles.
- children
Child profiles.
- Parameters:
- 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:
SonarQubeModelA 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:
- 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:
SonarQubeModelResponse from getting quality profile changelog.
- events
List of changelog entries.
- paging
Paging information.
- Parameters:
- 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:
SonarQubeModelResponse from getting projects using a quality profile.
- paging
Paging information.
- results
List of projects.
- 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:
SonarQubeModelA 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].