diff --git a/cli/audit.py b/cli/audit.py
index 11fe14a13..2c34573df 100755
--- a/cli/audit.py
+++ b/cli/audit.py
@@ -100,8 +100,8 @@ def write_csv(queue: Queue[list[problem.Problem]], fd: TextIO, settings: types.C
problems = __filter_problems(problems, settings)
for p in problems:
json_data = p.to_json(with_url)
- data = [] if not server_id else [server_id]
- data += [json_data[k] for k in ("problem", "type", "severity", "message") if k in json_data]
+ data = [server_id] if server_id else []
+ data += [json_data[k] for k in ("problem", "type", "severity", "message", "url") if k in json_data]
csvwriter.writerow(data)
queue.task_done()
queue.task_done()
@@ -246,7 +246,7 @@ def main() -> None:
errcode = errcodes.SIF_AUDIT_ERROR
(settings["SERVER_ID"], problems) = _audit_sif(file, settings)
problems = __filter_problems(problems, settings)
- problem.dump_report(problems, file=ofile, server_id=settings["SERVER_ID"], format=fmt)
+ problem.dump_report(problems, file=ofile, server_id=settings["SERVER_ID"], fmt=fmt)
else:
sq = platform.Platform(**kwargs)
sq.verify_connection()
diff --git a/cli/findings_export.py b/cli/findings_export.py
index 6119271cf..952ba8170 100755
--- a/cli/findings_export.py
+++ b/cli/findings_export.py
@@ -373,6 +373,12 @@ def main() -> None:
key_regexp=params.get(options.KEY_REGEXP, None),
branch_regexp=branch_regexp,
)
+ if params[options.COMPONENT_TYPE] == "portfolios":
+ components = []
+ for comp in components_list:
+ components += comp.components()
+ components_list = components
+
if len(components_list) == 0:
br = f"and branch matching regexp '{params[options.BRANCH_REGEXP]}'" if options.BRANCH_REGEXP in params else ""
raise exceptions.SonarException(
diff --git a/cli/housekeeper.py b/cli/housekeeper.py
index f5c2b1712..02b7a36b2 100644
--- a/cli/housekeeper.py
+++ b/cli/housekeeper.py
@@ -32,7 +32,6 @@
from cli import options
import sonar.logging as log
from sonar import platform, tokens, users, projects, branches, pull_requests, version, errcodes
-from sonar.util import types
import sonar.util.constants as c
import sonar.utilities as util
import sonar.exceptions as ex
@@ -145,41 +144,58 @@ def _parse_arguments() -> object:
return options.parse_and_check(parser=parser, logger_name=TOOL_NAME)
-def _delete_objects(problems: problem.Problem, mode: str, settings: types.ConfigSettings) -> tuple[int, int, int, int, int]:
- """Deletes objects (that should be housekept)"""
+def _revoke_tokens(problems: problem.Problem, mode: str) -> int:
+ """Revokes user tokens (that should be housekept)"""
revoked_token_count = 0
- deleted_projects = {}
- deleted_branch_count = 0
- deleted_pr_count = 0
- deleted_loc = 0
- for p in problems:
+ for p in [p for p in problems if isinstance(p.concerned_object, tokens.UserToken)]:
obj = p.concerned_object
- if obj is None:
- continue # BUG
try:
- if isinstance(obj, projects.Project):
- loc = int(obj.get_measure("ncloc", fallback="0"))
- if mode == "delete":
- log.info("Deleting %s, %d LoC", str(obj), loc)
- else:
- log.info("%s, %d LoC should be deleted", str(obj), loc)
- if mode != "delete" or obj.delete():
- deleted_projects[obj.key] = obj
- deleted_loc += loc
- if isinstance(obj, (tokens.UserToken, users.User)) and (mode != "delete" or obj.revoke()):
+ if mode != "delete" or obj.revoke():
revoked_token_count += 1
- elif settings[PROJ_MAX_AGE] > 0 and obj.project().key in deleted_projects:
- log.info("%s deleted, so no need to delete %s", str(obj.project()), str(obj))
- elif mode != "delete" or obj.delete():
- log.info("%s to delete", str(obj))
- if isinstance(obj, branches.Branch):
- deleted_branch_count += 1
- elif isinstance(obj, pull_requests.PullRequest):
- deleted_pr_count += 1
+ except ex.ObjectNotFound:
+ log.warning("Token %s does not exist, revocation skipped...", obj)
+ return revoked_token_count
+
+
+def _delete_projects(problems: problem.Problem, mode: str) -> tuple[list[str], int]:
+ """Deletes projects (that should be housekept)"""
+ deleted_projects = []
+ loc_total = 0
+ for obj in [p.concerned_object for p in problems if isinstance(p.concerned_object, projects.Project)]:
+ try:
+ loc = int(obj.get_measure("ncloc", fallback="0"))
+ log.info("Deleting %s, %d LoC" if mode == "delete" else "%s, %d LoC should be deleted", str(obj), loc)
+ if mode != "delete" or obj.delete():
+ deleted_projects.append(obj.key)
+ loc_total += loc
+ except ex.ObjectNotFound:
+ log.warning("%s does not exist, deletion skipped...", str(obj))
+ return deleted_projects, loc_total
+
+def _delete_class(problems: problem.Problem, mode: str, proj_list: list[str], object_class: object) -> int:
+ """Deletes branches or PRs (that should be housekept)"""
+ counter = 0
+ for obj in [p.concerned_object for p in problems if isinstance(p.concerned_object, object_class)]:
+ try:
+ if obj.project().key in proj_list:
+ log.info("%s deleted, so no need to delete %s", str(obj.project()), str(obj))
+ continue
+ log.info("%s to delete", str(obj))
+ if mode != "delete" or obj.delete():
+ counter += 1
except ex.ObjectNotFound:
log.warning("%s does not exist, deletion skipped...", str(obj))
+ return counter
+
+def _delete_objects(problems: problem.Problem, mode: str) -> tuple[int, int, int, int, int]:
+ """Deletes objects (that should be housekept)"""
+ deleted_projects = {}
+ revoked_token_count = _revoke_tokens(problems, mode)
+ deleted_projects, deleted_loc = _delete_projects(problems, mode)
+ deleted_branch_count = _delete_class(problems, mode, deleted_projects, branches.Branch)
+ deleted_pr_count = _delete_class(problems, mode, deleted_projects, pull_requests.PullRequest)
return (
len(deleted_projects),
deleted_loc,
@@ -224,13 +240,11 @@ def main() -> None:
if token_age:
problems += get_user_problems(settings, sq)
- problem.dump_report(problems, file=kwargs[options.REPORT_FILE], format="csv")
+ problem.dump_report(problems, file=kwargs[options.REPORT_FILE], fmt="csv")
- op = "to delete"
- if mode == "delete":
- op = "deleted"
- (deleted_proj, deleted_loc, deleted_branches, deleted_prs, revoked_tokens) = _delete_objects(problems, mode, settings=settings)
+ (deleted_proj, deleted_loc, deleted_branches, deleted_prs, revoked_tokens) = _delete_objects(problems, mode)
+ op = "deleted" if mode == "delete" else "to delete"
if proj_age > 0:
log.info("%d projects older than %d days (%d LoCs) %s", deleted_proj, proj_age, deleted_loc, op)
if branch_age > 0:
diff --git a/cli/support.py b/cli/support.py
index dc33a621b..ca8b00b7a 100755
--- a/cli/support.py
+++ b/cli/support.py
@@ -166,7 +166,7 @@ def main():
if problems:
found_problems = True
log.warning("%d issues found during audit", len(problems))
- problem.dump_report(problems, file=None, format="csv")
+ problem.dump_report(problems, file=None, fmt="csv")
comment += build_jira_comments(problems)
else:
log.info("%d issues found during audit", len(problems))
diff --git a/pyproject.toml b/pyproject.toml
index e55747f9a..839b14d8d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -172,6 +172,9 @@ extend-ignore = [
"I001",
"TRY003",
"EM102",
+ "C901", # Complexity rule, better covered by SonarQube
+ "ANN401", # Disallow Any type annotation
+ "TD001", # Disallow TODO/FIXME comments
]
exclude = [
diff --git a/sonar/app_branches.py b/sonar/app_branches.py
index b233bab5f..fd40b1497 100644
--- a/sonar/app_branches.py
+++ b/sonar/app_branches.py
@@ -21,14 +21,12 @@
"""Abstraction of Sonar Application Branch"""
from __future__ import annotations
-from typing import Optional
-from datetime import datetime
-
+from typing import Optional, TYPE_CHECKING
import json
from requests.utils import quote
import sonar.logging as log
-from sonar.util import types, cache
+from sonar.util import cache
from sonar.components import Component
@@ -36,6 +34,9 @@
from sonar import exceptions, projects, utilities
import sonar.util.constants as c
+if TYPE_CHECKING:
+ from sonar.util import types
+ from datetime import datetime
_NOT_SUPPORTED = "Applications not supported in community edition"
diff --git a/sonar/applications.py b/sonar/applications.py
index 795f20168..4aaef0c43 100644
--- a/sonar/applications.py
+++ b/sonar/applications.py
@@ -260,6 +260,7 @@ def delete(self) -> bool:
return super().delete()
def get_hotspots(self, filters: Optional[dict[str, str]] = None) -> dict[str, object]:
+ """Returns the security hotspots of the application (ie of its projects or branches)"""
new_filters = filters.copy() if filters else {}
pattern = new_filters.pop("branch", None) if new_filters else None
if not pattern:
@@ -271,6 +272,7 @@ def get_hotspots(self, filters: Optional[dict[str, str]] = None) -> dict[str, ob
return findings_list
def get_issues(self, filters: Optional[dict[str, str]] = None) -> dict[str, object]:
+ """Returns the issues of the application (ie of its projects or branches)"""
new_filters = filters.copy() if filters else {}
pattern = new_filters.pop("branch", None) if new_filters else None
if not pattern:
diff --git a/sonar/audit/problem.py b/sonar/audit/problem.py
index 898510984..588739f90 100644
--- a/sonar/audit/problem.py
+++ b/sonar/audit/problem.py
@@ -63,7 +63,7 @@ def to_json(self, with_url=False):
def dump_report(
- problems: list[Problem], file: str, server_id: Optional[str] = None, format: str = "csv", with_url: bool = False, separator: str = ","
+ problems: list[Problem], file: str, server_id: Optional[str] = None, fmt: str = "csv", with_url: bool = False, separator: str = ","
) -> None:
"""Dumps to file a report about a list of problems
@@ -74,7 +74,7 @@ def dump_report(
:rtype: None
"""
log.info("Writing report to %s", f"file '{file}'" if file else "stdout")
- if format == "json":
+ if fmt == "json":
__dump_json(problems=problems, file=file, server_id=server_id, with_url=with_url)
else:
__dump_csv(problems=problems, file=file, server_id=server_id, with_url=with_url, separator=separator)
@@ -91,14 +91,13 @@ def __dump_csv(problems: list[Problem], file: str, server_id: Optional[str] = No
with utilities.open_file(file, "w") as fd:
csvwriter = csv.writer(fd, delimiter=separator)
header = ["Server Id"] if server_id else []
- header += ["Audit Check", "Category", "Severity", "Message"]
+ header += ["Problem", "Category", "Severity", "Message"]
header += ["URL"] if with_url else []
csvwriter.writerow(header)
for p in problems:
- data = []
- if server_id is not None:
- data = [server_id]
- data += list(p.to_json(with_url).values())
+ json_data = p.to_json(with_url)
+ data = [server_id] if server_id else []
+ data += [json_data[k] for k in ("problem", "type", "severity", "message", "url") if k in json_data]
csvwriter.writerow(data)
diff --git a/sonar/branches.py b/sonar/branches.py
index 9fa714bc4..1bb68c6db 100644
--- a/sonar/branches.py
+++ b/sonar/branches.py
@@ -22,24 +22,27 @@
from __future__ import annotations
from http import HTTPStatus
-from typing import Optional
-from datetime import datetime
+from typing import Optional, TYPE_CHECKING
+
import json
import re
from urllib.parse import unquote
import requests.utils
from sonar import platform
-from sonar.util import types, cache
+from sonar.util import cache
import sonar.logging as log
from sonar import components, settings, exceptions, tasks
-from sonar import projects
+from sonar import projects as proj
import sonar.utilities as util
from sonar.audit.problem import Problem
from sonar.audit.rules import get_rule, RuleId
import sonar.util.constants as c
+if TYPE_CHECKING:
+ from sonar.util import types
+ from datetime import datetime
_UNSUPPORTED_IN_CE = "Branches not available in Community Edition"
@@ -57,7 +60,7 @@ class Branch(components.Component):
"get_new_code": "new_code_periods/list",
}
- def __init__(self, project: projects.Project, name: str) -> None:
+ def __init__(self, project: proj.Project, name: str) -> None:
"""Don't use this, use class methods to create Branch objects
:raises UnsupportedOperation: When attempting to branches on Community Edition
@@ -76,10 +79,10 @@ def __init__(self, project: projects.Project, name: str) -> None:
log.debug("Created object %s", str(self))
@classmethod
- def get_object(cls, concerned_object: projects.Project, branch_name: str) -> Branch:
+ def get_object(cls, concerned_object: proj.Project, branch_name: str) -> Branch:
"""Gets a SonarQube Branch object
- :param projects.Project concerned_object: projects.Project concerned by the branch
+ :param Project concerned_object: Project concerned by the branch
:param str branch_name: The branch name
:raises UnsupportedOperation: If trying to manipulate branches on a community edition
:raises ObjectNotFound: If project key or branch name not found in SonarQube
@@ -97,10 +100,10 @@ def get_object(cls, concerned_object: projects.Project, branch_name: str) -> Bra
return cls.load(concerned_object, branch_name, br)
@classmethod
- def load(cls, concerned_object: projects.Project, branch_name: str, data: types.ApiPayload) -> Branch:
+ def load(cls, concerned_object: proj.Project, branch_name: str, data: types.ApiPayload) -> Branch:
"""Gets a Branch object from JSON data gotten from a list API call
- :param projects.Project concerned_object: the projects.Project the branch belonsg to
+ :param Project concerned_object: the Project the branch belonsg to
:param str branch_name: Name of the branch
:param dict data: Data received from API call
:return: The Branch object
@@ -122,7 +125,7 @@ def __hash__(self) -> int:
"""Computes a uuid for the branch that can serve as index"""
return hash((self.concerned_object.key, self.name, self.base_url()))
- def project(self) -> projects.Project:
+ def project(self) -> proj.Project:
"""Returns the project key"""
return self.concerned_object
@@ -186,7 +189,7 @@ def get(
except exceptions.ObjectNotFound as e:
if re.match(r"Project .+ not found", e.message):
log.warning("Clearing project cache")
- projects.Project.CACHE.clear()
+ proj.Project.CACHE.clear()
raise
def post(self, api: str, params: types.ApiParams = None, mute: tuple[HTTPStatus] = (), **kwargs: str) -> requests.Response:
@@ -196,7 +199,7 @@ def post(self, api: str, params: types.ApiParams = None, mute: tuple[HTTPStatus]
except exceptions.ObjectNotFound as e:
if re.match(r"Project .+ not found", e.message):
log.warning("Clearing project cache")
- projects.Project.CACHE.clear()
+ proj.Project.CACHE.clear()
raise
def new_code(self) -> str:
@@ -396,8 +399,7 @@ def audit(self, audit_settings: types.ConfigSettings) -> list[Problem]:
try:
if audit_settings.get(c.AUDIT_MODE_PARAM, "") == "housekeeper":
return self.__audit_last_analysis(audit_settings)
- else:
- return self.__audit_last_analysis(audit_settings) + self.__audit_never_analyzed() + self._audit_component(audit_settings)
+ return self.__audit_last_analysis(audit_settings) + self.__audit_never_analyzed() + self._audit_component(audit_settings)
except Exception as e:
log.error("%s while auditing %s, audit skipped", util.error_msg(e), str(self))
return []
@@ -414,10 +416,10 @@ def last_task(self) -> Optional[tasks.Task]:
return task
-def get_list(project: projects.Project) -> dict[str, Branch]:
+def get_list(project: proj.Project) -> dict[str, Branch]:
"""Retrieves the list of branches of a project
- :param projects.Project project: projects.Project the branch belongs to
+ :param Project project: Project the branch belongs to
:raises UnsupportedOperation: Branches not supported in Community Edition
:return: List of project branches
:rtype: dict{branch_name: Branch}
@@ -436,13 +438,13 @@ def exists(endpoint: platform.Platform, branch_name: str, project_key: str) -> b
:param Platform endpoint: Reference to the SonarQube platform
:param str branch_name: Branch name
- :param str project_key: projects.Project key
+ :param str project_key: Project key
:raises UnsupportedOperation: Branches not supported in Community Edition
:return: Whether the branch exists in SonarQube
:rtype: bool
"""
try:
- project = projects.Project.get_object(endpoint, project_key)
+ project = proj.Project.get_object(endpoint, project_key)
except exceptions.ObjectNotFound:
return False
return branch_name in get_list(project)
diff --git a/sonar/findings.py b/sonar/findings.py
index 012f6e5ab..8072f237b 100644
--- a/sonar/findings.py
+++ b/sonar/findings.py
@@ -21,21 +21,24 @@
from __future__ import annotations
import concurrent.futures
-from datetime import datetime
-from typing import Optional
+from typing import Optional, TYPE_CHECKING
+
import re
import Levenshtein
import sonar.logging as log
import sonar.sqobject as sq
import sonar.platform as pf
-from sonar.util import types
from sonar.util import constants as c, issue_defs as idefs
from sonar import exceptions
import sonar.utilities as util
from sonar import projects, rules
-from sonar.changelog import Changelog
+
+if TYPE_CHECKING:
+ from datetime import datetime
+ from sonar.util import types
+ from sonar.changelog import Changelog
_JSON_FIELDS_REMAPPED = (("pull_request", "pullRequest"), ("_comments", "comments"))
diff --git a/sonar/measures.py b/sonar/measures.py
index 108a57b75..2c5a73f74 100644
--- a/sonar/measures.py
+++ b/sonar/measures.py
@@ -23,7 +23,7 @@
from __future__ import annotations
import json
-from typing import Any, Optional
+from typing import Any, Optional, Union
from sonar import metrics, exceptions, platform
from sonar.util.types import ApiPayload, ApiParams, KeyList
from sonar.util import cache, constants as c
@@ -171,7 +171,7 @@ def get_history(concerned_object: object, metrics_list: KeyList, **kwargs) -> li
return res_list
-def get_rating_letter(rating: Any) -> str:
+def get_rating_letter(rating: Union[float, str]) -> str:
"""
:param any rating: The rating as repturned by the API (a str or float)
:return: The rating converted from number to letter, if number between 1 and 5, else the unchanged rating
diff --git a/sonar/portfolios.py b/sonar/portfolios.py
index e9568cebc..467bdfbd9 100644
--- a/sonar/portfolios.py
+++ b/sonar/portfolios.py
@@ -26,28 +26,30 @@
from __future__ import annotations
import re
-from typing import Optional, Union, Any
+from typing import Optional, Union, Any, TYPE_CHECKING
import json
from http import HTTPStatus
from threading import Lock
import sonar.logging as log
import sonar.platform as pf
-from sonar.util import types, cache
+from sonar.util import cache
import sonar.util.constants as c
from sonar import aggregations, exceptions, applications, app_branches
from sonar.projects import Project
-from sonar.branches import Branch
import sonar.permissions.permissions as perms
import sonar.permissions.portfolio_permissions as pperms
import sonar.sqobject as sq
import sonar.utilities as util
from sonar.audit import rules, problem
-
from sonar.portfolio_reference import PortfolioReference
+if TYPE_CHECKING:
+ from sonar.util import types
+ from sonar.branches import Branch
+
_CLASS_LOCK = Lock()
_PORTFOLIO_QUALIFIER = "VW"
@@ -538,7 +540,7 @@ def add_application_branch(self, app_key: str, branch: str = c.DEFAULT_BRANCH) -
self._applications[app_key].append(branch)
return True
- def add_subportfolio(self, key: str, name: str = None, by_ref: bool = False) -> Portfolio:
+ def add_subportfolio(self, key: str, name: Optional[str] = None, by_ref: bool = False) -> Portfolio:
"""Adds a subportfolio to a portfolio, defined by key, name and by reference option"""
log.info("Adding sub-portfolios to %s", str(self))
diff --git a/sonar/settings.py b/sonar/settings.py
index ade891e9f..60b341f24 100644
--- a/sonar/settings.py
+++ b/sonar/settings.py
@@ -440,7 +440,7 @@ def get_all(endpoint: pf.Platform, project: Optional[object] = None) -> dict[str
return get_bulk(endpoint, component=project, include_not_set=True)
-def new_code_to_string(data: Any) -> Union[int, str, None]:
+def new_code_to_string(data: Union[int, str, dict[str, str]]) -> Union[int, str, None]:
"""Converts a new code period from anything to int str"""
if isinstance(data, (int, str)):
return data
@@ -539,10 +539,9 @@ def encode(setting: Setting, setting_value: Any) -> dict[str, Any]:
"""Encodes the params to pass to api/settings/set according to setting value type"""
if isinstance(setting_value, list):
return {"values": setting_value} if isinstance(setting_value[0], str) else {"fieldValues": [json.dumps(v) for v in setting_value]}
- elif isinstance(setting_value, bool):
+ if isinstance(setting_value, bool):
return {"value": str(setting_value).lower()}
- else:
- return {"values" if setting.multi_valued else "value": setting_value}
+ return {"values" if setting.multi_valued else "value": setting_value}
def reset_setting(endpoint: pf.Platform, setting_key: str, project: Optional[object] = None) -> bool:
diff --git a/sonar/tasks.py b/sonar/tasks.py
index 6ac58fd04..25583f627 100644
--- a/sonar/tasks.py
+++ b/sonar/tasks.py
@@ -20,7 +20,7 @@
"""Abstraction of the SonarQube background task concept"""
-from typing import Optional
+from typing import Optional, Any
from datetime import datetime
import time
import json
@@ -441,7 +441,7 @@ def audit(self, audit_settings: types.ConfigSettings) -> list[Problem]:
return problems
-def search(endpoint: pf.Platform, only_current: bool = False, component_key: Optional[str] = None, **kwargs) -> list[Task]:
+def search(endpoint: pf.Platform, only_current: bool = False, component_key: Optional[str] = None, **kwargs: Any) -> list[Task]:
"""Searches background tasks
:param Platform endpoint: Reference to the SonarQube platform
diff --git a/sonar/util/component_helper.py b/sonar/util/component_helper.py
index 3172d92d0..6a7dfa058 100644
--- a/sonar/util/component_helper.py
+++ b/sonar/util/component_helper.py
@@ -21,7 +21,6 @@
import re
from typing import Optional
-from sonar.util import constants as c
from sonar import platform, components, projects, applications, portfolios
@@ -33,12 +32,9 @@ def get_components(
if component_type in ("apps", "applications"):
components = [p for p in applications.get_list(endpoint).values() if re.match(rf"^{key_regexp}$", p.key)]
elif component_type == "portfolios":
- portfolio_list = [p for p in portfolios.get_list(endpoint).values() if re.match(rf"^{key_regexp}$", p.key)]
+ components = [p for p in portfolios.get_list(endpoint).values() if re.match(rf"^{key_regexp}$", p.key)]
if kwargs.get("topLevelOnly", False):
- portfolio_list = [p for p in portfolio_list if p.is_toplevel()]
- components = []
- for comp in portfolio_list:
- components += comp.components()
+ components = [p for p in components if p.is_toplevel()]
else:
components = [p for p in projects.get_list(endpoint).values() if re.match(rf"^{key_regexp}$", p.key)]
if component_type != "portfolios" and branch_regexp:
diff --git a/sonar/webhooks.py b/sonar/webhooks.py
index c004ba00c..2f861228f 100644
--- a/sonar/webhooks.py
+++ b/sonar/webhooks.py
@@ -21,7 +21,7 @@
"""Abstraction of the SonarQube webhook concept"""
from __future__ import annotations
-from typing import Optional
+from typing import Optional, ClassVar
import json
@@ -41,10 +41,16 @@ class WebHook(sq.SqObject):
Abstraction of the SonarQube "webhook" concept
"""
- CACHE = cache.Cache()
- API = {c.CREATE: "webhooks/create", c.READ: "webhooks/list", c.UPDATE: "webhooks/update", c.LIST: "webhooks/list", c.DELETE: "webhooks/delete"}
- SEARCH_KEY_FIELD = "key"
- SEARCH_RETURN_FIELD = "webhooks"
+ CACHE: ClassVar[cache.Cache] = cache.Cache()
+ API: ClassVar[dict[str, str]] = {
+ c.CREATE: "webhooks/create",
+ c.READ: "webhooks/list",
+ c.UPDATE: "webhooks/update",
+ c.LIST: "webhooks/list",
+ c.DELETE: "webhooks/delete",
+ }
+ SEARCH_KEY_FIELD: ClassVar[str] = "key"
+ SEARCH_RETURN_FIELD: ClassVar[str] = "webhooks"
def __init__(self, endpoint: pf.Platform, name: str, url: str, secret: Optional[str] = None, project: Optional[str] = None) -> None:
"""Constructor"""
diff --git a/test/files/config.json b/test/files/config.json
index 44ac5d8c9..bd51fbe2a 100644
--- a/test/files/config.json
+++ b/test/files/config.json
@@ -1,186 +1,60 @@
{
- "applications": {
- "APPY": {
- "branches": {
- "main": {
- "isMain": true
- }
- },
- "name": "App Test 2",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin"
- }
- },
- "visibility": "public"
- },
- "APP_TEST": {
- "branches": {
- "BRANCH foo": {
- "projects": {
- "BANKING-AFRICA-OPS": "main",
- "ai-code-fix": "main",
- "dvpa": "main"
- }
- },
- "Other Branch": {
- "projects": {
- "BANKING-AFRICA-OPS": "main",
- "ai-code-fix": "main",
- "dvpa": "main"
- }
- },
- "main": {
- "isMain": true,
- "projects": {
- "BANKING-AFRICA-OPS": "main",
- "ai-code-fix": "main",
- "dvpa": "main"
- }
- },
- "some-branch": {
- "projects": {
- "BANKING-AFRICA-OPS": "main",
- "ai-code-fix": "main",
- "dvpa": "main"
- }
- }
- },
- "name": "Test App",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin",
- "sonar-users": "user"
- }
- },
- "tags": "africa",
- "visibility": "private"
- },
- "App_with_no_perms": {
- "branches": {
- "main": {
- "isMain": true
- }
- },
- "name": "App with no perms",
- "permissions": {
- "groups": {},
- "users": {
- "admin": "admin, user"
- }
- },
- "visibility": "private"
- },
- "FE-BE": {
- "branches": {
- "main": {
- "isMain": true,
- "projects": {
- "web-backend": "main",
- "web-frontend": "main"
- }
- }
- },
- "description": "A web app with a separate front-end and back-end project",
- "name": "Front-end / Back-end",
- "permissions": {
- "groups": {
- "developers": "user",
- "project-admins": "admin, user",
- "security-auditors": "user",
- "sonar-administrators": "admin, user",
- "tech-leads": "user"
- },
- "users": {
- "admin": "admin, user"
- }
+ "platform": {
+ "edition": "enterprise",
+ "url": "https://latest.olivierk.ngrok.io",
+ "version": "2025.5.0",
+ "serverId": "243B8A4D-AY5SFSbmgIK8PCmM81th",
+ "plugins": {
+ "ecocodephp": {
+ "version": "1.4.4",
+ "name": "ecoCode - PHP language"
},
- "visibility": "private"
- },
- "MON": {
- "branches": {
- "main": {
- "isMain": true,
- "projects": {
- "project1": "main",
- "project2": "main",
- "project3": "main",
- "project4": "main",
- "proyecto5": "main"
- }
- }
+ "checkstyle": {
+ "version": "10.17.0",
+ "name": "Checkstyle"
},
- "name": "My monorepo",
- "permissions": {
- "groups": {
- "project-admins": "admin",
- "sonar-administrators": "admin"
- }
+ "dependencycheck": {
+ "version": "5.0.0",
+ "name": "Dependency-Check"
},
- "visibility": "public"
+ "creedengojava": {
+ "version": "2.1.1",
+ "name": "creedengo - Java language"
+ }
}
},
"globalSettings": {
- "analysisScope": {
- "sonar.global.exclusions": "**/vendor/**, **/lib/**"
- },
- "authentication": {
- "sonar.auth.bitbucket.allowUsersToSignUp": true,
- "sonar.auth.bitbucket.enabled": false,
- "sonar.auth.github.allowUsersToSignUp": true,
- "sonar.auth.github.apiUrl": "https://api.github.com/",
- "sonar.auth.github.appId": 946173,
- "sonar.auth.github.enabled": true,
- "sonar.auth.github.groupsSync": false,
- "sonar.auth.github.organizations": "okorach-org",
- "sonar.auth.github.webUrl": "https://github.com/",
- "sonar.auth.gitlab.allowUsersToSignUp": true,
- "sonar.auth.gitlab.allowedGroups": "gl-admins",
- "sonar.auth.gitlab.enabled": true,
- "sonar.auth.gitlab.groupsSync": true,
- "sonar.auth.gitlab.url": "https://gitlab.com/",
- "sonar.auth.saml.applicationId": "sonarqube",
- "sonar.auth.saml.enabled": false,
- "sonar.auth.saml.providerName": "SAML",
- "sonar.auth.saml.signature.enabled": false,
- "sonar.auth.token.max.allowed.lifetime": "1 year",
- "sonar.forceAuthentication": true
- },
- "devopsIntegration": {
- "ADO": {
- "type": "azure",
- "url": "https://dev.azure.com/olivierkorach"
- },
- "GitHub okorach": {
- "appId": "946159",
- "clientId": "Iv23ligl0iLhGRRvwFGO",
- "type": "github",
- "url": "https://api.github.com"
- },
- "GitHub okorach-org": {
- "appId": "946173",
- "clientId": "Iv23limDid9ft2WPgTPK",
- "type": "github",
- "url": "https://api.github.com"
- },
- "gitlab.com": {
- "type": "gitlab",
- "url": "https://gitlab.com/api/v4"
- }
- },
"generalSettings": {
- "provisioning.github.project.visibility.enabled": true,
- "provisioning.gitlab.enabled": false,
- "sonar.ai.suggestions.enabled": "ENABLED_FOR_ALL_PROJECTS",
- "sonar.allowPermissionManagementForProjectAdmins": false,
- "sonar.announcement.displayMessage": false,
- "sonar.announcement.message": "You are on LATEST",
- "sonar.autodetect.ai.code": true,
- "sonar.builtInQualityProfiles.disableNotificationOnUpdate": false,
- "sonar.ce.parallelProjectTasks": false,
+ "sonar.sca.featureEnabled": "true",
+ "sonar.sca.enabled": "true",
+ "sonar.sca.rescan.frequency": "Daily",
+ "sonar.sca.rescan.branch_type": "Kept branches only",
+ "sonar.autodetect.ai.code": "true",
+ "sonar.architecture.config.model": "Model is not configured.",
+ "provisioning.gitlab.enabled": "false",
+ "provisioning.github.project.visibility.enabled": "true",
+ "sonar.login.message": "Welcome to [superbank.com](https://www.superbank.com) SonarQube.\nPlease log in using your GitHub account",
+ "sonar.login.displayMessage": "true",
+ "sonar.plugins.downloadOnlyRequired": "true",
+ "sonar.announcement.message": "You are on LATEST, You are on LATEST",
+ "sonar.builtInQualityProfiles.disableNotificationOnUpdate": "false",
+ "sonar.cpd.cross_project": "false",
+ "sonar.projectCreation.mainBranchName": "main",
+ "sonar.developerAggregatedInfo.disabled": "false",
+ "sonar.jreAutoProvisioning.disabled": "false",
+ "sonar.announcement.displayMessage": "false",
+ "sonar.qualityProfiles.allowDisableInheritedRules": "false",
+ "sonar.ce.parallelProjectTasks": "false",
+ "sonar.lf.enableGravatar": "false",
+ "sonar.lf.gravatarServerUrl": "https://secure.gravatar.com/avatar/{EMAIL_MD5}.jpg?s={SIZE}&d=identicon",
+ "sonar.qualitygate.ignoreSmallChanges": "true",
"sonar.core.serverBaseURL": "https://latest.olivierk.ngrok.io",
- "sonar.cpd.cross_project": false,
- "sonar.dbcleaner.auditHousekeeping": "Monthly",
+ "sonar.githubactions.activate": "true",
+ "sonar.pdf.confidential.header.enabled": "true",
+ "sonar.governance.report.project.branch.frequency": "Monthly",
+ "sonar.governance.report.view.frequency": "Monthly",
+ "sonar.dbcleaner.hoursBeforeKeepingOnlyOneSnapshotByDay": "24",
+ "sonar.dbcleaner.daysBeforeDeletingInactiveBranchesAndPRs": "30",
"sonar.dbcleaner.branchesToKeepWhenInactive": [
"comma,branch",
"develop",
@@ -189,79 +63,94 @@
"release-.*",
"trunk"
],
- "sonar.dbcleaner.daysBeforeDeletingAnticipatedTransitions": 30,
- "sonar.dbcleaner.daysBeforeDeletingClosedIssues": 30,
- "sonar.dbcleaner.daysBeforeDeletingInactiveBranchesAndPRs": 30,
- "sonar.dbcleaner.hoursBeforeKeepingOnlyOneSnapshotByDay": 24,
- "sonar.dbcleaner.weeksBeforeDeletingAllSnapshots": 260,
- "sonar.dbcleaner.weeksBeforeKeepingOnlyAnalysesWithVersion": 104,
- "sonar.dbcleaner.weeksBeforeKeepingOnlyOneSnapshotByMonth": 52,
- "sonar.dbcleaner.weeksBeforeKeepingOnlyOneSnapshotByWeek": 4,
- "sonar.developerAggregatedInfo.disabled": false,
- "sonar.governance.report.project.branch.frequency": "Monthly",
- "sonar.governance.report.view.frequency": "Monthly",
- "sonar.kubernetes.activate": true,
- "sonar.kubernetes.helm.activate": true,
- "sonar.lf.enableGravatar": false,
- "sonar.lf.gravatarServerUrl": "https://secure.gravatar.com/avatar/{EMAIL_MD5}.jpg?s={SIZE}&d=identicon",
- "sonar.login.displayMessage": true,
- "sonar.login.message": "Welcome to superbank.com SonarQube.
Please log in using your GitHub account, Welcome to [superbank.com](https://www.spuerbank.com) SonarQube.\nPlease log in using your GitHub account",
- "sonar.multi-quality-mode.enabled": true,
- "sonar.pdf.confidential.header.enabled": true,
- "sonar.plugins.downloadOnlyRequired": true,
- "sonar.projectCreation.mainBranchName": "main",
- "sonar.qualityProfiles.allowDisableInheritedRules": false,
- "sonar.qualitygate.ignoreSmallChanges": true,
- "sonar.scanner.skipNodeProvisioning": false,
- "sonar.scm.disabled": false,
- "sonar.technicalDebt.developmentCost": 30,
+ "sonar.dbcleaner.weeksBeforeKeepingOnlyOneSnapshotByWeek": "4",
+ "sonar.dbcleaner.weeksBeforeKeepingOnlyOneSnapshotByMonth": "52",
+ "sonar.dbcleaner.weeksBeforeKeepingOnlyAnalysesWithVersion": "104",
+ "sonar.dbcleaner.weeksBeforeDeletingAllSnapshots": "260",
+ "sonar.dbcleaner.daysBeforeDeletingClosedIssues": "30",
+ "sonar.dbcleaner.daysBeforeDeletingAnticipatedTransitions": "30",
+ "sonar.dbcleaner.auditHousekeeping": "Monthly",
+ "sonar.scanner.skipNodeProvisioning": "false",
+ "sonar.kubernetes.activate": "true",
+ "sonar.kubernetes.helm.activate": "true",
+ "sonar.scm.disabled": "false",
+ "sonar.validateWebhooks": "true",
+ "sonar.allowPermissionManagementForProjectAdmins": "false",
+ "sonar.enforceAzureOpenAiDomainValidation": "true",
+ "sonar.technicalDebt.developmentCost": "30",
"sonar.technicalDebt.ratingGrid": "0.03,0.07,0.2,0.5",
- "sonar.validateWebhooks": true,
+ "sonar.multi-quality-mode.enabled": true,
+ "sonar.ai.suggestions.enabled": "ENABLED_FOR_ALL_PROJECTS",
"webhooks": {
"Jenkins": {
- "url": "https://jenkins.olivierk.ngrok.io"
+ "url": "https://my.jenkins.server/sonar-webhook/"
}
}
},
+ "analysisScope": {
+ "sonar.global.exclusions": "**/vendor/**, **/lib/**"
+ },
+ "authentication": {
+ "sonar.auth.saml.enabled": "false",
+ "sonar.auth.github.enabled": "true",
+ "sonar.auth.gitlab.enabled": "true",
+ "sonar.auth.bitbucket.enabled": "false",
+ "sonar.auth.saml.applicationId": "sonarqube",
+ "sonar.auth.gitlab.url": "https://gitlab.com/",
+ "sonar.auth.saml.providerName": "SAML",
+ "sonar.auth.bitbucket.allowUsersToSignUp": "true",
+ "sonar.auth.github.appId": "946173",
+ "sonar.auth.gitlab.allowUsersToSignUp": "true",
+ "sonar.auth.github.allowUsersToSignUp": "true",
+ "sonar.auth.gitlab.allowedGroups": "gl-admins",
+ "sonar.auth.github.groupsSync": "false",
+ "sonar.auth.gitlab.groupsSync": "true",
+ "sonar.auth.github.apiUrl": "https://api.github.com/",
+ "sonar.auth.github.webUrl": "https://github.com/",
+ "sonar.auth.github.organizations": "okorach-org",
+ "sonar.auth.saml.signature.enabled": "false",
+ "sonar.auth.token.max.allowed.lifetime": "1 year",
+ "sonar.forceAuthentication": "true"
+ },
"languages": {
"abap": {
"sonar.abap.file.suffixes": ".ab4, .abap, .asprog, .flow"
},
"ansible": {
- "sonar.ansible.activate": true
+ "sonar.ansible.activate": "true"
},
"apex": {
"sonar.apex.file.suffixes": ".cls, .trigger"
},
"azureresourcemanager": {
- "sonar.azureresourcemanager.activate": true,
- "sonar.azureresourcemanager.file.identifier": "https://schema.management.azure.com/schemas/",
- "sonar.azureresourcemanager.file.suffixes": ".bicep"
+ "sonar.azureresourcemanager.activate": "true",
+ "sonar.azureresourcemanager.file.suffixes": ".bicep",
+ "sonar.azureresourcemanager.file.identifier": "https://schema.management.azure.com/schemas/"
},
"cfamily": {
"sonar.c.file.suffixes": ".c, .h",
"sonar.cpp.file.suffixes": ".c++, .cc, .cpp, .cxx, .h++, .hh, .hpp, .hxx, .ipp",
"sonar.objc.file.suffixes": ".m"
},
+ "cs": {
+ "sonar.cs.analyzeGeneratedCode": "false",
+ "sonar.cs.analyzeRazorCode": "true",
+ "sonar.cs.file.suffixes": ".cs",
+ "sonar.cs.ignoreHeaderComments": "true",
+ "sonar.cs.roslyn.ignoreIssues": "false"
+ },
"cloudformation": {
- "sonar.cloudformation.activate": true,
+ "sonar.cloudformation.activate": "true",
"sonar.cloudformation.file.identifier": "AWSTemplateFormatVersion"
},
"cobol": {
- "sonar.cobol.adaprep.activation": false,
- "sonar.cobol.byteBasedColumnCount": false,
+ "sonar.cobol.adaprep.activation": "false",
+ "sonar.cobol.byteBasedColumnCount": "false",
"sonar.cobol.dialect": "ibm-enterprise-cobol",
- "sonar.cobol.exec.recoveryMode": true,
+ "sonar.cobol.exec.recoveryMode": "true",
+ "sonar.cpd.cobol.ignoreLiteral": "true",
"sonar.cobol.sourceFormat": "fixed",
- "sonar.cobol.tab.width": 8,
- "sonar.cpd.cobol.ignoreLiteral": true
- },
- "cs": {
- "sonar.cs.analyzeGeneratedCode": false,
- "sonar.cs.analyzeRazorCode": true,
- "sonar.cs.file.suffixes": ".cs",
- "sonar.cs.ignoreHeaderComments": true,
- "sonar.cs.roslyn.ignoreIssues": false
+ "sonar.cobol.tab.width": "8"
},
"css": {
"sonar.css.file.suffixes": ".css, .less, .scss"
@@ -270,136 +159,179 @@
"sonar.dart.file.suffixes": ".dart"
},
"docker": {
- "sonar.docker.activate": true,
+ "sonar.docker.activate": "true",
"sonar.docker.file.patterns": "*.dockerfile, Dockerfile, *.Dockerfile"
},
- "flex": {
- "sonar.flex.file.suffixes": "as"
+ "vbnet": {
+ "sonar.vbnet.roslyn.ignoreIssues": "false",
+ "sonar.vbnet.analyzeGeneratedCode": "false",
+ "sonar.vbnet.file.suffixes": ".vb",
+ "sonar.vbnet.ignoreHeaderComments": "true"
},
- "go": {
- "sonar.go.exclusions": "**/vendor/**",
- "sonar.go.file.suffixes": ".go"
+ "terraform": {
+ "sonar.terraform.activate": "true",
+ "sonar.terraform.file.suffixes": ".tf"
},
- "html": {
- "sonar.html.file.suffixes": ".ascx, .aspx, .cmp, .cshtml, .erb, .html, .rhtml, .shtm, .shtml, .twig, .vbhtml, .xhtml"
+ "kotlin": {
+ "sonar.kotlin.file.suffixes": ".kt"
},
- "ipynb": {
- "sonar.ipynb.file.suffixes": "ipynb"
+ "python": {
+ "sonar.python.file.suffixes": "py",
+ "sonar.python.coverage.reportPaths": "coverage-reports/*coverage-*.xml",
+ "sonar.python.xunit.skipDetails": "false",
+ "sonar.python.xunit.reportPath": "build//xunit-results*.xml"
},
"java": {
"sonar.java.checkstyle.reportPaths": "target/checkstyle-result.xml, target/sonar/checkstyle-result.xml",
- "sonar.java.enablePreview": false,
- "sonar.java.file.suffixes": ".jav, .java",
- "sonar.java.ignoreUnnamedModuleForSplitPackage": false,
- "sonar.java.jvmframeworkconfig.activate": true,
- "sonar.java.jvmframeworkconfig.file.patterns": "**/src/main/resources/**/application*.properties, **/src/main/resources/**/application*.yaml, **/src/main/resources/**/application*.yml"
+ "sonar.java.jvmframeworkconfig.activate": "true",
+ "sonar.java.enablePreview": "false",
+ "sonar.java.jvmframeworkconfig.file.patterns": "**/src/main/resources/**/application*.properties, **/src/main/resources/**/application*.yaml, **/src/main/resources/**/application*.yml",
+ "sonar.java.file.suffixes": ".java, .jav",
+ "sonar.java.ignoreUnnamedModuleForSplitPackage": "false"
},
"javascript": {
+ "sonar.javascript.globals": "Backbone, OenLayers, _, angular, casper, d3, dijit, dojo, dojox, goog, google, moment, sap",
+ "sonar.javascript.ignoreHeaderComments": "true",
"sonar.javascript.environments": "amd, applescript, atomtest, browser, commonjs, couch, embertest, flow, greasemonkey, jasmine, jest, jquery, meteor, mocha, mongo, nashorn, node, phantomjs, prototypejs, protractor, qunit, rhino, serviceworker, shared-node-browser, shelljs, webextensions, worker, wsh, yui",
"sonar.javascript.file.suffixes": ".cjs, .js, .jsx, .mjs, .vue",
- "sonar.javascript.globals": "Backbone, OenLayers, _, angular, casper, d3, dijit, dojo, dojox, goog, google, moment, sap",
- "sonar.javascript.ignoreHeaderComments": true,
- "sonar.javascript.maxFileSize": 1000
+ "sonar.javascript.maxFileSize": "1000",
+ "sonar.jasmin.internal.disabled": "false"
},
- "jcl": {
- "sonar.jcl.file.suffixes": ".jcl"
+ "php": {
+ "sonar.php.file.suffixes": "inc, php, php3, php4, php5, phtml",
+ "sonar.php.exclusions": "**/vendor/**",
+ "sonar.php.frameworkDetection": "true"
},
- "json": {
- "sonar.json.activate": false,
- "sonar.json.file.suffixes": ".json"
+ "ruby": {
+ "sonar.ruby.file.suffixes": ".rb",
+ "sonar.ruby.coverage.reportPaths": "coverage/.resultset.json",
+ "sonar.ruby.exclusions": "**/vendor/**"
+ },
+ "scala": {
+ "sonar.scala.file.suffixes": ".scala"
+ },
+ "swift": {
+ "sonar.swift.file.suffixes": ".swift"
+ },
+ "typescript": {
+ "sonar.typescript.file.suffixes": ".cts, .mts, .ts, .tsx"
+ },
+ "flex": {
+ "sonar.flex.file.suffixes": "as"
+ },
+ "go": {
+ "sonar.go.file.suffixes": ".go",
+ "sonar.go.exclusions": "**/vendor/**"
+ },
+ "html": {
+ "sonar.html.file.suffixes": ".ascx, .aspx, .cmp, .cshtml, .erb, .html, .rhtml, .shtm, .shtml, .twig, .vbhtml, .xhtml"
},
"jsp": {
"sonar.jsp.file.suffixes": ".jsp, .jspf, .jspx"
},
- "kotlin": {
- "sonar.kotlin.file.suffixes": ".kt"
+ "jcl": {
+ "sonar.jcl.file.suffixes": ".jcl"
},
- "php": {
- "sonar.php.exclusions": "**/vendor/**",
- "sonar.php.file.suffixes": "inc, php, php3, php4, php5, phtml",
- "sonar.php.frameworkDetection": true
+ "json": {
+ "sonar.json.activate": "false",
+ "sonar.json.file.suffixes": ".json"
},
"pli": {
"sonar.pli.extralingualCharacters": "#@$",
"sonar.pli.file.suffixes": ".pli",
- "sonar.pli.ignoreHeaderComments": true,
- "sonar.pli.marginLeft": 2,
- "sonar.pli.marginRight": 72
+ "sonar.pli.ignoreHeaderComments": "true",
+ "sonar.pli.marginLeft": "2",
+ "sonar.pli.marginRight": "72"
},
"plsql": {
"sonar.plsql.file.suffixes": "pkb, pks, sql",
- "sonar.plsql.ignoreHeaderComments": false
+ "sonar.plsql.ignoreHeaderComments": "false"
},
- "python": {
- "sonar.python.coverage.reportPaths": "coverage-reports/*coverage-*.xml",
- "sonar.python.file.suffixes": "py",
- "sonar.python.xunit.reportPath": "build//xunit-results*.xml",
- "sonar.python.xunit.skipDetails": false
+ "ipynb": {
+ "sonar.ipynb.file.suffixes": "ipynb"
},
"rpg": {
"sonar.rpg.file.suffixes": ".RPG, .RPGLE, .SQLRPGLE, .rpg, .rpgle, .sqlrpgle",
- "sonar.rpg.leftMarginWidth": 12
- },
- "ruby": {
- "sonar.ruby.coverage.reportPaths": "coverage/.resultset.json",
- "sonar.ruby.exclusions": "**/vendor/**",
- "sonar.ruby.file.suffixes": ".rb"
- },
- "scala": {
- "sonar.scala.file.suffixes": ".scala"
- },
- "swift": {
- "sonar.swift.file.suffixes": ".swift"
+ "sonar.rpg.leftMarginWidth": "12"
},
- "terraform": {
- "sonar.terraform.activate": true,
- "sonar.terraform.file.suffixes": ".tf"
+ "rust": {
+ "sonar.rust.clippy.enabled": "true",
+ "sonar.rust.clippy.offline": "false",
+ "sonar.rust.file.suffixes": ".rs"
},
"text": {
- "sonar.text.activate": true,
- "sonar.text.inclusions": "**/*.sh, **/*.bash, **/*.zsh, **/*.ksh, **/*.ps1, **/*.properties, **/*.conf, **/*.pem, **/*.config, .env, .aws/config",
- "sonar.text.inclusions.activate": true
+ "sonar.text.activate": "true",
+ "sonar.text.inclusions.activate": "true",
+ "sonar.text.inclusions": "**/*.sh, **/*.bash, **/*.zsh, **/*.ksh, **/*.ps1, **/*.properties, **/*.conf, **/*.pem, **/*.config, .env, .aws/config"
},
"tsql": {
"sonar.tsql.file.suffixes": ".tsql"
},
- "typescript": {
- "sonar.typescript.file.suffixes": ".cts, .mts, .ts, .tsx"
- },
"vb": {
"sonar.vb.file.suffixes": ".BAS, .CLS, .CTL, .FRM, .bas, .cls, .ctl, .frm",
- "sonar.vb.ignoreHeaderComments": true
- },
- "vbnet": {
- "sonar.vbnet.analyzeGeneratedCode": false,
- "sonar.vbnet.file.suffixes": ".vb",
- "sonar.vbnet.ignoreHeaderComments": true,
- "sonar.vbnet.roslyn.ignoreIssues": false
+ "sonar.vb.ignoreHeaderComments": "true"
},
"xml": {
"sonar.xml.file.suffixes": ".xml, .xsd, .xsl"
},
"yaml": {
- "sonar.yaml.activate": false,
+ "sonar.yaml.activate": "false",
"sonar.yaml.file.suffixes": ".yaml, .yml"
}
},
- "linters": {
- "sonar.checkstyle.filters": "",
- "sonar.checkstyle.treewalkerfilters": ""
+ "tests": {
+ "sonar.coverage.jacoco.xmlReportPaths": "**/jacoco*.xml",
+ "sonar.junit.reportPaths": "**/junit*.xml"
},
- "permissionTemplates": {
- "0. Default Template for portfolio": {
- "defaultFor": "portfolios",
- "description": "Default portfolio permissions",
- "permissions": {
- "groups": {
- "sonar-users": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user"
- }
- }
+ "devopsIntegration": {
+ "GitHub okorach": {
+ "type": "github",
+ "url": "https://api.github.com",
+ "appId": "946159",
+ "clientId": "Iv23ligl0iLhGRRvwFGO"
+ },
+ "GitHub okorach-org": {
+ "type": "github",
+ "url": "https://api.github.com",
+ "appId": "946173",
+ "clientId": "Iv23limDid9ft2WPgTPK"
},
+ "ADO": {
+ "type": "azure",
+ "url": "https://dev.azure.com/olivierkorach"
+ },
+ "gitlab.com": {
+ "type": "gitlab",
+ "url": "https://gitlab.com/api/v4"
+ }
+ },
+ "sastConfig": {},
+ "linters": {
+ "sonar.checkstyle.filters": "",
+ "sonar.checkstyle.treewalkerfilters": ""
+ },
+ "thirdParty": {
+ "sonar.dependencyCheck.severity.high": "7.0",
+ "sonar.dependencyCheck.severity.medium": "4.0",
+ "sonar.dependencyCheck.severity.low": "0.0",
+ "sonar.dependencyCheck.htmlReportPath": "${WORKSPACE}/dependency-check-report.html",
+ "sonar.dependencyCheck.jsonReportPath": "${WORKSPACE}/dependency-check-report.json",
+ "sonar.dependencyCheck.securityHotspot": "false",
+ "sonar.dependencyCheck.skip": "false",
+ "sonar.dependencyCheck.summarize": "false",
+ "sonar.dependencyCheck.useFilePath": "false"
+ },
+ "permissions": {
+ "groups": {
+ "ci-tools": "provisioning, scan",
+ "language-experts": "profileadmin",
+ "quality-managers": "gateadmin",
+ "sonar-administrators": "admin, applicationcreator, gateadmin, portfoliocreator, profileadmin, provisioning, scan",
+ "sonar-users": "applicationcreator, portfoliocreator"
+ }
+ },
+ "permissionTemplates": {
"0. Default template": {
- "defaultFor": "projects, applications",
"description": "This permission template will be used as default when no other permission configuration is available",
"permissions": {
"groups": {
@@ -410,25 +342,34 @@
"sonar-users": "user",
"tech-leads": "codeviewer, issueadmin, user"
}
- }
+ },
+ "defaultFor": "projects, applications"
+ },
+ "0. Default Template for portfolio": {
+ "description": "Default portfolio permissions",
+ "permissions": {
+ "groups": {
+ "sonar-users": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user"
+ }
+ },
+ "defaultFor": "portfolios"
},
"1. Banking projects": {
"description": "Template for banking BU projects",
- "pattern": "BANKING-.*",
"permissions": {
+ "users": {
+ "olivier-k31581": "admin, user"
+ },
"groups": {
"security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
"sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
"sonar-users": "codeviewer, user"
- },
- "users": {
- "olivier-k31581": "admin, user"
}
- }
+ },
+ "pattern": "BANKING-.*"
},
"9. Bad Template - Bad pattern": {
"description": "A wrong template whose projectKeyPattern would select a single project... at best. This is probably not the intended behavior. Templates make sense only if used for multiple projects",
- "pattern": "my_favorite_project",
"permissions": {
"groups": {
"ci-tools": "scan",
@@ -437,3849 +378,4399 @@
"security-auditors": "issueadmin, securityhotspotadmin",
"tech-leads": "codeviewer, issueadmin, securityhotspotadmin, user"
}
- }
+ },
+ "pattern": "my_favorite_project"
},
- "9. Bad template - Permission templates granted to users": {
- "description": "A bad perm template with perms granted directly to user",
- "pattern": "badbadbad.*",
- "permissions": {
- "users": {
- "james": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "michal": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user"
- }
- }
+ "9. Bad template - no permissions": {
+ "description": "A template with no permissions granted. This makes little sense",
+ "pattern": "FOOBAR.*"
},
"9. Bad template - Permissions granted to Anyone": {
"description": "A permission template that grants permissions to Anyone (ie unauthenticated users), this is a bad practice",
- "pattern": "BAD9.*",
"permissions": {
"groups": {
"Anyone": "user",
"ci-tools": "scan",
"developers": "codeviewer, user"
}
- }
+ },
+ "pattern": "BAD9.*"
},
- "9. Bad template - no permissions": {
- "description": "A template with no permissions granted. This makes little sense",
- "pattern": "FOOBAR.*"
- }
- },
- "permissions": {
- "groups": {
- "ci-tools": "provisioning, scan",
- "language-experts": "profileadmin",
- "quality-managers": "gateadmin",
- "sonar-administrators": "admin, applicationcreator, gateadmin, portfoliocreator, profileadmin, provisioning, scan",
- "sonar-users": "applicationcreator, portfoliocreator"
+ "9. Bad template - Permission templates granted to users": {
+ "description": "A bad perm template with perms granted directly to user",
+ "permissions": {
+ "users": {
+ "james": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "michal": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user"
+ }
+ },
+ "pattern": "badbadbad.*"
}
- },
- "sastConfig": {},
- "tests": {},
- "thirdParty": {
- "sonar.dependencyCheck.htmlReportPath": "${WORKSPACE}/dependency-check-report.html",
- "sonar.dependencyCheck.jsonReportPath": "${WORKSPACE}/dependency-check-report.json",
- "sonar.dependencyCheck.securityHotspot": false,
- "sonar.dependencyCheck.severity.high": 7.0,
- "sonar.dependencyCheck.severity.low": 0.0,
- "sonar.dependencyCheck.severity.medium": 4.0,
- "sonar.dependencyCheck.skip": false,
- "sonar.dependencyCheck.summarize": false,
- "sonar.dependencyCheck.useFilePath": false,
- "sonar.enforceAzureOpenAiDomainValidation": true,
- "sonar.jasmin.enabled": false,
- "sonar.rust.clippy.enabled": true,
- "sonar.rust.file.suffixes": ".rs",
- "sonar.sca.enabled": true,
- "sonar.sca.rescan.branch_type": "Kept branches only",
- "sonar.sca.rescan.frequency": "Daily"
}
},
- "groups": {
- "ci-tools": "Service accounts for CI tools",
- "developers": "Developers",
- "gl-admins": "",
- "gl-admins/gl-devs": "",
- "language-experts": "Language experts in charge of defining the company governance in terms of Quality Profiles (rulesets enforced in the company)",
- "project-admins": "Project administrators in charge of project configuration",
- "quality-managers": "Quality Managers in charge of defining company governance in terms of quality gates",
- "security-auditors": "Security Auditors in charge of reviewing security issues",
- "sonar-administrators": "SonarQube administrators",
- "tech-leads": "Senior developers in charge of reviewing issues",
- "z comma , group": ""
- },
- "platform": {
- "edition": "enterprise",
- "plugins": {
- "checkstyle": "10.17.0 [Checkstyle]",
- "creedengojava": "2.1.1 [creedengo - Java language]",
- "dependencycheck": "5.0.0 [Dependency-Check]",
- "ecocodephp": "1.4.4 [ecoCode - PHP language]"
+ "qualityGates": {
+ "My Sonar way": {
+ "conditions": [
+ "new_duplicated_lines_density >= 3%",
+ "new_security_hotspots_reviewed <= 100%",
+ "new_violations >= 0"
+ ]
},
- "serverId": "243B8A4D-AY5SFSbmgIK8PCmM81th",
- "url": "https://latest.olivierk.ngrok.io",
- "version": "2025.4.2"
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ },
+ "Sonar way + SCA": {
+ "conditions": [
+ "new_coverage <= 80%",
+ "new_duplicated_lines_density >= 3%",
+ "new_security_hotspots_reviewed <= 100%",
+ "new_violations >= 0",
+ "sca_count_any_issue >= 7",
+ "sca_rating_any_issue >= B",
+ "sca_rating_licensing >= C",
+ "sca_rating_vulnerability >= C",
+ "sca_severity_any_issue >= High",
+ "sca_severity_licensing >= High",
+ "sca_severity_vulnerability >= 24",
+ "vulnerable_dependencies >= 0"
+ ]
+ },
+ "Sonar way for AI Code": {
+ "isBuiltIn": true
+ },
+ "\ud83e\udd47 1 - Corp Gold": {
+ "conditions": [
+ "new_coverage <= 85%",
+ "new_duplicated_lines_density >= 2%",
+ "new_security_hotspots_reviewed <= 100%",
+ "new_violations >= 0",
+ "prioritized_rule_issues >= 0",
+ "sca_severity_any_issue >= High",
+ "software_quality_blocker_issues >= 0",
+ "software_quality_reliability_rating >= D",
+ "software_quality_security_rating >= C"
+ ]
+ },
+ "\ud83e\udd48 2 - Corp Silver": {
+ "conditions": [
+ "new_coverage <= 50%",
+ "new_duplicated_lines_density >= 3%",
+ "new_security_hotspots_reviewed <= 100%",
+ "new_violations >= 0",
+ "prioritized_rule_issues >= 0",
+ "software_quality_security_rating >= C"
+ ]
+ },
+ "\ud83e\udd49 3 - Corp base": {
+ "conditions": [
+ "new_duplicated_lines_density >= 3%",
+ "new_software_quality_maintainability_rating >= A",
+ "new_software_quality_reliability_issues >= 0",
+ "new_software_quality_security_issues >= 0"
+ ]
+ }
},
- "portfolios": {
- "All": {
- "name": "Company global portfolio",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin"
- }
- },
- "portfolios": {
- "Banking": {
- "byReference": true
- },
- "CORP-INSURANCE": {
- "byReference": true
- },
- "Other_unclassified_projects": {
- "name": "Other unclassified projects",
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "rest": true
- }
- }
- },
- "visibility": "public"
+ "qualityProfiles": {
+ "abap": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "Banking": {
- "name": "Banking",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin, user",
- "sonar-users": "user"
- }
- },
- "portfolios": {
- "Investment_Banking": {
- "name": "Investment Banking",
- "portfolios": {
- "Corporate_Mergers_and_Acquisitions": {
- "name": "Corporate Mergers and Acquisitions",
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "regexp": ".*MERgER.*"
- }
- },
- "Corporate_loans": {
- "name": "Corporate loans",
- "projects": {}
- }
- },
- "projects": {
- "branch": "develop",
- "regexp": ".*-INVESTMENT-.*"
- }
- },
- "Private_Banking": {
- "byReference": true
- },
- "Retail_Banking": {
- "name": "Retail Banking",
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "regexp": ".*-RETAIL-.*"
- }
+ "ansible": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true,
+ "children": {
+ "Test": {}
}
- },
- "projects": {},
- "visibility": "private"
+ }
},
- "CEO_Strategic_Projects": {
- "name": "CEO Strategic Projects",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin",
- "sonar-users": "user"
- }
- },
- "projects": {},
- "visibility": "private"
+ "apex": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "CORP-INSURANCE": {
- "name": "Insurance",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin"
- }
- },
- "portfolios": {
- "CORP-INSURANCE-HEALTH": {
- "byReference": true
- },
- "CORP-INSURANCE-LIFE": {
- "byReference": true
- },
- "Other_Insurance": {
- "name": "Other Insurance",
- "projects": {}
- }
- },
- "visibility": "public"
+ "azureresourcemanager": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "CORP-INSURANCE-HEALTH": {
- "name": "Health Insurance",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin, user",
- "sonar-users": "user",
- "z comma , group": "user"
- },
- "users": {
- "michal": "user",
- "olivier": "admin",
- "syncer": "user"
- }
- },
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "regexp": ".*HEALTH.*"
- },
- "visibility": "private"
+ "c": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "CORP-INSURANCE-LIFE": {
- "name": "Life Insurance",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin"
- }
- },
- "projects": {
- "manual": {
- "INSURANCE-LIFE": "-DEFAULT_BRANCH-",
- "INSURANCE-PET": "-DEFAULT_BRANCH-"
- }
- },
- "visibility": "public"
+ "cloudformation": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "DEMOS": {
- "description": "Demo projects gathered by tag",
- "name": "Demo projects",
- "permissions": {
- "groups": {
- "sonar-users": "admin"
- }
- },
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "tags": "demo"
- },
- "visibility": "public"
+ "cobol": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "PORTFOLIO-OLIVIER": {
- "description": "Portfolios of all Olivier's projects",
- "name": "Olivier's projects",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin"
- }
- },
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "regexp": ".*okorach.*"
+ "cpp": {
+ "Mission critical": {
+ "isBuiltIn": true
},
- "visibility": "public"
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "PORTFOLIO-PYTHON": {
- "name": "Python Projects",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin"
- }
- },
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "tags": "python"
- },
- "visibility": "public"
+ "cs": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "PORTFOLIO_ALL": {
- "name": "All projects",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin, user",
- "sonar-users": "user"
- }
- },
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "rest": true
- },
- "visibility": "private"
+ "css": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "PORTFOLIO_APPS": {
- "applications": {
- "APPY": "-DEFAULT_BRANCH-",
- "APP_TEST": "-DEFAULT_BRANCH-, Other Branch"
- },
- "name": "Portfolio of Apps",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin",
- "sonar-users": "user"
+ "dart": {
+ "Sonar way": {
+ "isBuiltIn": true,
+ "children": {
+ "Corp Way": {
+ "isDefault": true,
+ "children": {
+ "Critical projects": {
+ "addedRules": [
+ {
+ "key": "dart:S106"
+ },
+ {
+ "key": "dart:S1541",
+ "params": {
+ "threshold": "10"
+ }
+ },
+ {
+ "key": "dart:S7084"
+ },
+ {
+ "key": "dart:S113"
+ },
+ {
+ "key": "dart:S115"
+ },
+ {
+ "key": "dart:S7103",
+ "severities": {
+ "MAINTAINABILITY": "HIGH"
+ }
+ },
+ {
+ "key": "dart:S1854"
+ }
+ ]
+ }
+ }
+ }
}
- },
- "visibility": "private"
+ }
},
- "PORTFOLIO_MULTI_BRANCHES": {
- "name": "Portfolios multiple branches",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin",
- "sonar-users": "user"
- }
- },
- "projects": {
- "manual": {
- "BANKING-INVESTMENT-EQUITY": "-DEFAULT_BRANCH-",
- "BANKING-INVESTMENT-MERGER": "-DEFAULT_BRANCH-",
- "BANKING-PORTAL": [
- "comma,branch",
- "main",
- "release-3.2"
- ]
- }
- },
- "visibility": "private"
+ "docker": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "PORT_FAV_PROJECTS": {
- "name": "My favorite projects",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin",
- "sonar-users": "user"
- }
- },
- "projects": {
- "manual": {
- "ai-code-fix": "-DEFAULT_BRANCH-",
- "code-variants": "-DEFAULT_BRANCH-",
- "creedengo-issues": "-DEFAULT_BRANCH-",
- "demo-rules": "-DEFAULT_BRANCH-",
- "demo:autoconfig": "-DEFAULT_BRANCH-",
- "demo:coverage": "-DEFAULT_BRANCH-",
- "mute-in-ide": "-DEFAULT_BRANCH-"
- }
- },
- "visibility": "private"
+ "flex": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "Private_Banking": {
- "name": "Private Banking",
- "permissions": {
- "groups": {
- "sonar-administrators": "admin"
- }
- },
- "projects": {
- "branch": "-DEFAULT_BRANCH-",
- "tags": "private-banking"
- },
- "visibility": "public"
- }
- },
- "projects": {
- "25k-issues": {
- "name": "25k-issues",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
+ "githubactions": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-ACQUISITIONS": {
- "name": "BANKING-ACQUISITIONS",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
+ "go": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-ACQUISITIONS-DILIGENCE": {
- "name": "BANKING-ACQUISITIONS-DILIGENCE",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
+ "ipynb": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-AFRICA-OPS": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Banking Africa operations",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ "java": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true,
+ "children": {
+ "Security Max": {
+ "addedRules": [
+ {
+ "key": "java:S2647"
+ },
+ {
+ "key": "java:S2658"
+ },
+ {
+ "key": "java:S6374"
+ },
+ {
+ "key": "java:Don_t_be_rude",
+ "severities": {
+ "MAINTAINABILITY": "-DEFAULT-",
+ "SECURITY": "LOW"
+ },
+ "params": {
+ "message": "Hey don't be rude!",
+ "regularExpression": "(fuck|shit|merde)"
+ }
+ }
+ ]
+ },
+ "Sonar Way + Checkstyle": {
+ "addedRules": [
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.InnerAssignmentCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.AvoidDoubleBraceInitializationCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.ParameterAssignmentCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.AvoidNoArgumentSuperConstructorCallCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.InnerTypeLastCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MissingCtorCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MissingSwitchDefaultCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MultipleVariableDeclarationsCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.FinalClassCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.javadoc.MissingJavadocPackageCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.CovariantEqualsCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.UpperEllCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SuperCloneCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.HideUtilityClassConstructorCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.annotation.PackageAnnotationCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoFinalizerCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.ConstructorsDeclarationGroupingCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.javadoc.InvalidJavadocPositionCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanReturnCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceBeforeCaseDefaultColonCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.OverloadMethodsDeclarationOrderCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.UnusedLocalVariableCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoCloneCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.StringLiteralEqualityCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.EmptyStatementCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SuperFinalizeCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.OneTopLevelClassCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.modifier.ModifierOrderCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanExpressionCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoEnumTrailingCommaCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonInEnumerationCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoArrayTrailingCommaCheck"
+ },
+ {
+ "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.NoCodeInFileCheck"
+ }
+ ]
+ }
}
- },
- "tags": "africa",
- "visibility": "private"
+ }
},
- "BANKING-INVESTMENT-EQUITY": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-INVESTMENT-EQUITY",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
+ "jcl": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true,
+ "children": {
+ "All rules": {
+ "addedRules": [
+ {
+ "key": "jcl:S2260"
+ },
+ {
+ "key": "jcl:S6945",
+ "params": {
+ "allowedUnconditionalSteps": "2"
+ }
+ },
+ {
+ "key": "jcl:S6935"
+ },
+ {
+ "key": "jcl:S6947",
+ "params": {
+ "maxSteps": "50"
+ }
+ },
+ {
+ "key": "jcl:S6942"
+ },
+ {
+ "key": "jcl:S6977"
+ },
+ {
+ "key": "jcl:Track_usage_of_rogue_programs",
+ "severities": {
+ "MAINTAINABILITY": "-DEFAULT-",
+ "RELIABILITY": "-DEFAULT-",
+ "SECURITY": "INFO"
+ },
+ "params": {
+ "programName": "ROGUEPROG",
+ "replacementProgramName": "OKPROG"
+ }
+ }
+ ]
+ }
}
- },
- "visibility": "private"
+ }
},
- "BANKING-INVESTMENT-MERGER": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-INVESTMENT-MERGER",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
+ "js": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true,
+ "children": {
+ "security-max": {
+ "addedRules": [
+ {
+ "key": "javascript:S2817"
+ },
+ {
+ "key": "javascript:S1442"
+ },
+ {
+ "key": "javascript:S1525"
+ }
+ ]
+ }
}
- },
- "visibility": "private"
+ }
},
- "BANKING-MERGERS": {
- "name": "BANKING-MERGERS",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
+ "json": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-PORTAL": {
- "branches": {
- "comma,branch": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- },
- "release-3.2": {
- "keepWhenInactive": true
- }
- },
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-PORTAL",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
- },
- "BANKING-PRIVATE-ASSETS": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-PRIVATE-ASSETS",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
- },
- "BANKING-PRIVATE-WEALTH": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Wealth Management",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "tags": "banking, private-banking",
- "visibility": "private"
+ "jsp": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-RETAIL-ATM": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Retail - ATM",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
+ "kotlin": {
+ "No rules": {
+ "rules": [
+ {
+ "key": "kotlin:S3329",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
+ }
+ ]
},
- "tags": "banking, retail",
- "visibility": "private"
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-RETAIL-CLERK": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Retail Clerk",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "tags": "banking, retail",
- "visibility": "private"
+ "kubernetes": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-TRADING-EURO": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-TRADING-EURO",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
+ "neutral": {
+ "Neutral": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-TRADING-JAPAN": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-TRADING-JAPAN",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
+ "objc": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "BANKING-TRADING-NASDAQ": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-TRADING-NASDAQ",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
+ "php": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "INSURANCE-HEALTH": {
- "name": "INSURANCE-HEALTH",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin"
- }
- },
- "visibility": "private"
+ "pli": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
- "INSURANCE-HOME": {
- "name": "INSURANCE-HOME",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "INSURANCE-LIFE": {
- "name": "INSURANCE-LIFE",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "INSURANCE-PET": {
- "name": "INSURANCE-PET",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "RETAIL-WEB": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Retail Web",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "tags": "banking, retail",
- "visibility": "private"
- },
- "TEST": {
- "name": "name",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin"
- }
- },
- "visibility": "private"
- },
- "TESTSYNC": {
- "name": "TESTSYNC",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin"
- }
- },
- "visibility": "private"
- },
- "ai-code-fix": {
- "name": "AI CodeFix examples",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "sonar.autodetect.ai.code": false,
- "tags": "demo",
- "visibility": "private"
- },
- "autoconf-protobuf": {
- "name": "autoconf-protobuf",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "sonar.cfamily.customTargetArch": "aarch64_32",
- "sonar.cfamily.customTargetEnv": "gnuabi64",
- "sonar.cfamily.customTargetSystem": "cuda",
- "sonar.cfamily.customTargetVendor": "nvidia",
- "visibility": "private"
- },
- "bad:stale-project": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "BANKING-ASIA-OPS",
- "permissions": {
- "groups": {
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "sonar-users": "codeviewer, user"
- },
- "users": {
- "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
- "olivier-k31581": "admin, user"
- }
- },
- "visibility": "private"
- },
- "checkstyle-issues": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Project with checkstyle issues",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "qualityProfiles": {
- "java": "Sonar Way + Checkstyle"
- },
- "visibility": "private"
- },
- "code-variants": {
- "name": "code-variants",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "creedengo-issues": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Creedengo",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "sonar.coverage.exclusions": "**/*.css, **/.htm*",
- "visibility": "private"
- },
- "demo-autoconfig": {
- "name": "demo-autoconfig",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user"
- }
- },
- "visibility": "private"
- },
- "demo-rules": {
- "name": "demo-rules",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:ado-cli": {
- "name": "demo:ado-cli",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:autoconfig": {
- "name": "demo:autoconfig",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:autoconfig:carbon": {
- "branches": {
- "develop": {
- "isMain": true
- }
- },
- "name": "demo:autoconfig:carbon",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:coverage": {
- "name": "demo:coverage",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:github-actions-cli": {
- "name": "GitHub / Actions / CLI",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:github-actions-maven": {
- "binding": {
- "key": "GitHub okorach",
- "repository": "okorach/demo-actions-maven",
- "summaryCommentEnabled": true
- },
- "name": "demo:github-actions-maven",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:github-actions-mono-cli": {
- "branches": {
- "master": {
- "isMain": true
- }
- },
- "name": "GitHub / Actions / monorepo CLI",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:github-actions-mono-dotnet": {
- "branches": {
- "master": {
- "isMain": true
- }
- },
- "name": "GitHub / Actions / monorepo .Net Core",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:github-actions-mono-gradle": {
- "branches": {
- "master": {
- "isMain": true
- }
- },
- "name": "GitHub / Actions / monorepo Gradle",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:github-actions-mono-maven": {
- "branches": {
- "main": {
- "isMain": true
- },
- "master": {
- "keepWhenInactive": true
- }
- },
- "name": "demo:github-actions-mono-maven",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:gitlab-ci-maven": {
- "name": "GitLab-CI / Maven",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:gitlab:gradle": {
- "name": "demo:gitlab:gradle",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:gitlab:scanner-cli": {
- "binding": {
- "key": "gitlab.com",
- "repository": "30584574"
- },
- "branches": {
- "main": {
- "isMain": true
- },
- "master": {
- "keepWhenInactive": true
- }
- },
- "name": "demo:gitlab:scanner-cli",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:java-security": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "security",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user"
- }
- },
- "visibility": "private"
- },
- "demo:jcl": {
- "name": "JCL Demo",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:juice-shop": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "https://owasp-juice.shop"
- },
- {
- "name": "scm",
- "type": "scm",
- "url": "https://github.com/juice-shop/juice-shop.git"
- },
- {
- "name": "issue",
- "type": "issue",
- "url": "https://github.com/juice-shop/juice-shop/issues"
- }
- ],
- "name": "juice-shop",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin"
- }
- },
- "visibility": "private"
- },
- "demo:sca-log4shell-detect-maven": {
- "branches": {
- "main": {
- "isMain": true
- }
- },
- "links": [
- {
- "name": "scm",
- "type": "scm",
- "url": "https://github.com/okorach/log4shell-detect"
- },
- {
- "name": "homepage",
- "type": "homepage",
- "url": "https://github.com/okorach/log4shell-detect"
- }
- ],
- "name": "SCA demo - Log4shell detect - Maven",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "demo:secrets": {
- "name": "Secrets detection",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "qualityProfiles": {
- "secrets": "Corp Way"
- },
- "sonar.text.inclusions": "**/*, **/*.bash, **/*.conf, **/*.config, **/*.ksh, **/*.pem, **/*.properties, **/*.ps1, **/*.sh, **/*.zsh, .aws/config, .env, **/*.xml",
- "tags": "demo",
- "visibility": "private"
- },
- "demo:target-awareness": {
- "name": "demo:target-awareness",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "dotnet-with-cli": {
- "name": "dotnet-with-cli",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "dvpa": {
- "name": "dvpa",
- "newCodePeriod": "NUMBER_OF_DAYS = 30",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "sonar.cfamily.generateComputedConfig": false,
- "visibility": "private"
- },
- "exclusions-2": {
- "name": "exclusions-2",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "gradle-with-cli": {
- "name": "gradle-with-cli",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "juice-shop": {
- "links": [
- {
- "name": "scm",
- "type": "scm",
- "url": "https://github.com/juice-shop/juice-shop.git"
- },
- {
- "name": "issue",
- "type": "issue",
- "url": "https://github.com/juice-shop/juice-shop/issues"
- },
- {
- "name": "homepage",
- "type": "homepage",
- "url": "https://owasp-juice.shop"
- }
- ],
- "name": "juice-shop",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "maven-with-cli": {
- "name": "maven-with-cli",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "mute-in-ide": {
- "name": "Mute issue in IDE",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "no-scm": {
- "name": "no-scm",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "okorach-org_pr-demo_3a1857ec-cebc-49f2-96ac-9bbc99111469": {
- "binding": {
- "key": "GitHub okorach-org",
- "repository": "okorach-org/pr-demo",
- "summaryCommentEnabled": true
- },
- "branches": {
- "master": {
- "isMain": true
- }
- },
- "name": "pr-demo",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "okorach_audio-video-tools": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "name": "okorach_audio-video-tools",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "okorach_demo-gitlabci-cli_e81d5112-e681-44b2-aee4-62b56c8ac5cb": {
- "name": "okorach_demo-gitlabci-cli_e81d5112-e681-44b2-aee4-62b56c8ac5cb",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "okorach_demo-gitlabci-maven": {
- "name": "okorach_demo-gitlabci-maven",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "okorach_docker-hello-world": {
- "name": "okorach_docker-hello-world",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "okorach_sonar-tools": {
- "branches": {
- "comma,branch": {
- "keepWhenInactive": true,
- "newCodePeriod": "REFERENCE_BRANCH = develop"
- },
- "develop": {
- "keepWhenInactive": true,
- "newCodePeriod": "REFERENCE_BRANCH = master"
- },
- "master": {
- "isMain": true
- }
- },
- "name": "Sonar Tools",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "qualityGate": "\ud83e\udd47 1 - Corp Gold",
- "qualityProfiles": {
- "py": "Olivier Way"
- },
- "sonar.cfamily.ignoreHeaderComments": false,
- "sonar.issue.ignore.multicriteria": [
- {
- "resourceKey": "**/*.java",
- "ruleKey": "java:S1195"
- },
- {
- "resourceKey": "**/*.py",
- "ruleKey": "python:S211"
- }
- ],
- "tags": "python",
- "visibility": "private"
- },
- "okorach_sonar-tools-target": {
- "branches": {
- "comma,branch": {
- "keepWhenInactive": true
- },
- "develop": {
- "keepWhenInactive": true
- },
- "master": {
- "isMain": true
- }
- },
- "name": "Sonar Tools Target",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "org.owasp.webgoat:webgoat": {
- "branches": {
- "main": {
- "isMain": true
- }
- },
- "links": [
- {
- "name": "scm",
- "type": "scm",
- "url": "https://github.com/WebGoat/WebGoat"
- },
- {
- "name": "homepage",
- "type": "homepage",
- "url": "https://github.com/WebGoat/WebGoat"
- },
- {
- "name": "issue",
- "type": "issue",
- "url": "https://github.com/WebGoat/WebGoat/issues"
- }
- ],
- "name": "WebGoat",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "qualityProfiles": {
- "java": "Security Max"
- },
- "visibility": "private"
- },
- "project-without-analyses": {
- "name": "Project without analyses",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "project1": {
- "branches": {
- "develop": {
- "keepWhenInactive": true,
- "newCodePeriod": "REFERENCE_BRANCH = main"
- },
- "feature/new-feature": {
- "newCodePeriod": "REFERENCE_BRANCH = develop"
- },
- "main": {
- "isMain": true,
- "newCodePeriod": "PREVIOUS_VERSION"
- },
- "release-3.x": {
- "keepWhenInactive": true,
- "newCodePeriod": "NUMBER_OF_DAYS = 80"
- },
- "some-branch": {
- "newCodePeriod": "NUMBER_OF_DAYS = 30"
- }
- },
- "name": "Project 1",
- "newCodePeriod": "PREVIOUS_VERSION",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "sonar.coverage.jacoco.xmlReportPaths": "**/*jacoco*.xml",
- "visibility": "private"
- },
- "project2": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "name": "Project 2",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "project3": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "name": "Project 3",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "project4": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "name": "Project 4",
- "permissions": {
- "groups": {
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "proyecto5": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "name": "Project 5",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "tags": "python",
- "visibility": "private"
- },
- "pytorch": {
- "name": "pytorch",
- "permissions": {
- "groups": {
- "project-admins": "admin, user",
- "sonar-administrators": "admin",
- "sonar-users": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "source-key": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "master": {
- "isMain": true
- }
- },
- "name": "Source",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "third-party-issues": {
- "branches": {
- "develop": {
- "keepWhenInactive": true
- },
- "main": {
- "isMain": true
- }
- },
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "Third party issues",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user"
- }
- },
- "visibility": "private"
- },
- "training:complexity": {
- "name": "Training: Cyclomatic vs Cognitive complexity",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- }
- },
- "visibility": "private"
- },
- "training:external-issues": {
- "name": "Training: External issues import",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- }
- },
- "visibility": "private"
- },
- "training:security": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "http://maven.apache.org"
- }
- ],
- "name": "training:security",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user",
- "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
- }
- },
- "visibility": "private"
- },
- "web-backend": {
- "name": "Web back-end",
- "permissions": {
- "groups": {
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user"
- }
- },
- "visibility": "private"
- },
- "web-frontend": {
- "links": [
- {
- "name": "homepage",
- "type": "homepage",
- "url": "https://owasp-juice.shop"
- },
- {
- "name": "scm",
- "type": "scm",
- "url": "https://github.com/juice-shop/juice-shop.git"
- },
- {
- "name": "issue",
- "type": "issue",
- "url": "https://github.com/juice-shop/juice-shop/issues"
- }
- ],
- "name": "Web front-end",
- "permissions": {
- "groups": {
- "developers": "codeviewer, user",
- "project-admins": "admin, codeviewer, user",
- "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
- "sonar-administrators": "admin, codeviewer, user",
- "sonar-users": "user",
- "tech-leads": "codeviewer, issueadmin, user"
- },
- "users": {
- "admin": "admin, codeviewer, user"
- }
- },
- "tags": "3ds",
- "visibility": "private"
- }
- },
- "qualityGates": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- },
- "Sonar way + SCA": {
- "conditions": [
- "new_coverage <= 80",
- "new_duplicated_lines_density >= 3",
- "new_security_hotspots_reviewed <= 100",
- "new_violations >= 0",
- "sca_severity_licensing >= 19",
- "sca_severity_vulnerability >= 19"
- ]
- },
- "Sonar way for AI Code": {
- "isBuiltIn": true
- },
- "\ud83e\udd47 1 - Corp Gold": {
- "conditions": [
- "new_coverage <= 80",
- "new_duplicated_lines_density >= 2",
- "new_security_hotspots_reviewed <= 100",
- "new_violations >= 0",
- "prioritized_rule_issues >= 0",
- "sca_severity_any_issue >= 19",
- "software_quality_blocker_issues >= 0",
- "software_quality_reliability_rating >= C",
- "software_quality_security_rating >= C"
- ]
- },
- "\ud83e\udd48 2 - Corp Silver": {
- "conditions": [
- "new_coverage <= 50",
- "new_duplicated_lines_density >= 3",
- "new_security_hotspots_reviewed <= 100",
- "new_violations >= 0",
- "prioritized_rule_issues >= 0",
- "software_quality_security_rating >= C"
- ]
- },
- "\ud83e\udd49 3 - Corp base": {
- "conditions": [
- "new_duplicated_lines_density >= 3",
- "new_software_quality_maintainability_rating >= A",
- "new_software_quality_reliability_issues >= 0",
- "new_software_quality_security_issues >= 0"
- ]
- }
- },
- "qualityProfiles": {
- "abap": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "ansible": {
- "Sonar way": {
- "children": {
- "Test": {}
- },
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "apex": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "azureresourcemanager": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "c": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "cloudformation": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "cobol": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "cpp": {
- "Mission critical": {
- "isBuiltIn": true
- },
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "cs": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "css": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "dart": {
- "Sonar way": {
- "children": {
- "Corp Way": {
- "children": {
- "Critical projects": {
- "addedRules": [
- {
- "key": "dart:S106"
- },
- {
- "key": "dart:S1541"
- },
- {
- "key": "dart:S7084"
- },
- {
- "key": "dart:S113"
- },
- {
- "key": "dart:S115"
- },
- {
- "key": "dart:S7103",
- "severities": {
- "MAINTAINABILITY": "HIGH"
- }
- },
- {
- "key": "dart:S1854"
- }
- ]
- }
- }
- }
- },
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "docker": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "flex": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "go": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "ipynb": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "java": {
- "Sonar way": {
- "children": {
- "Security Max": {
- "addedRules": [
- {
- "key": "java:S2647"
- },
- {
- "key": "java:S2658"
- },
- {
- "key": "java:S6374"
- },
- {
- "key": "java:Don_t_be_rude"
- }
- ]
- },
- "Sonar Way + Checkstyle": {
- "addedRules": [
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.InnerAssignmentCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.AvoidDoubleBraceInitializationCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.ParameterAssignmentCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.AvoidNoArgumentSuperConstructorCallCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.InnerTypeLastCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MissingCtorCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MissingSwitchDefaultCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MultipleVariableDeclarationsCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.FinalClassCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.javadoc.MissingJavadocPackageCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.CovariantEqualsCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.UpperEllCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SuperCloneCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.HideUtilityClassConstructorCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.annotation.PackageAnnotationCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.OuterTypeFilenameCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoFinalizerCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.ConstructorsDeclarationGroupingCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.javadoc.InvalidJavadocPositionCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanReturnCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceBeforeCaseDefaultColonCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.OverloadMethodsDeclarationOrderCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.UnusedLocalVariableCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoCloneCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.StringLiteralEqualityCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.EmptyStatementCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SuperFinalizeCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.design.OneTopLevelClassCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.modifier.ModifierOrderCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanExpressionCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoEnumTrailingCommaCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonInEnumerationCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.NoArrayTrailingCommaCheck"
- },
- {
- "key": "checkstyle:com.puppycrawl.tools.checkstyle.checks.NoCodeInFileCheck"
- }
- ]
- }
- },
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "jcl": {
- "Sonar way": {
- "children": {
- "All rules": {
- "addedRules": [
- {
- "key": "jcl:S2260"
- },
- {
- "key": "jcl:S6945"
- },
- {
- "key": "jcl:S6935"
- },
- {
- "key": "jcl:S6947"
- },
- {
- "key": "jcl:S6942"
- },
- {
- "key": "jcl:S6977"
- },
- {
- "key": "jcl:Track_usage_of_rogue_programs",
- "severities": {
- "MAINTAINABILITY": "-DEFAULT-",
- "RELIABILITY": "-DEFAULT-",
- "SECURITY": "INFO"
- }
- }
- ]
- }
- },
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "js": {
- "Sonar way": {
- "children": {
- "security-max": {
- "addedRules": [
- {
- "key": "javascript:S2817"
- },
- {
- "key": "javascript:S1442"
- },
- {
- "key": "javascript:S1525"
- }
- ]
- }
- },
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "json": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "jsp": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "kotlin": {
- "No rules": {
- "rules": [
- {
- "key": "kotlin:S3329"
- }
- ]
- },
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "kubernetes": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "neutral": {
- "Neutral": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "objc": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "php": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "pli": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "plsql": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
+ "plsql": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
},
"py": {
"Prioritized": {
"rules": [
{
- "key": "python:BackticksUsage"
+ "key": "python:BackticksUsage",
+ "severity": "BLOCKER",
+ "impacts": {
+ "MAINTAINABILITY": "BLOCKER"
+ }
},
{
- "key": "python:ExecStatementUsage"
+ "key": "python:ExecStatementUsage",
+ "severity": "BLOCKER",
+ "impacts": {
+ "MAINTAINABILITY": "BLOCKER"
+ }
},
{
"key": "python:InequalityUsage",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
"prioritized": true
},
{
- "key": "python:PreIncrementDecrement"
+ "key": "python:PreIncrementDecrement",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:PrintStatementUsage"
+ "key": "python:PrintStatementUsage",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
"key": "python:S100",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ },
"params": {
"format": "^[a-z_][a-z0-9_]*$"
}
},
{
"key": "python:S101",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ },
"params": {
"format": "^_?([A-Z_][a-zA-Z0-9]*|[a-z_][a-z0-9_]*)$"
}
},
{
- "key": "python:S1045"
+ "key": "python:S1045",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1066"
+ "key": "python:S1066",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
"key": "python:S107",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
"params": {
"max": "13"
}
},
{
- "key": "python:S108"
+ "key": "python:S108",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1110"
+ "key": "python:S1110",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S112"
+ "key": "python:S112",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1134"
+ "key": "python:S1134",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1135"
+ "key": "python:S1135",
+ "severity": "INFO",
+ "impacts": {
+ "MAINTAINABILITY": "INFO"
+ }
},
{
- "key": "python:S1143"
+ "key": "python:S1143",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S1144"
+ "key": "python:S1144",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
"key": "python:S116",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ },
"params": {
"format": "^[_a-z][_a-z0-9]*$"
}
},
{
"key": "python:S117",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ },
"params": {
"format": "^[_a-z][a-z0-9_]*$"
}
},
{
- "key": "python:S1172"
+ "key": "python:S1172",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1186"
+ "key": "python:S1186",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
"key": "python:S1192",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ },
"params": {
- "exclusionRegex": "",
- "threshold": "3"
+ "threshold": "3",
+ "exclusionRegex": ""
}
},
{
- "key": "python:S1226"
+ "key": "python:S1226",
+ "severity": "MINOR",
+ "impacts": {
+ "RELIABILITY": "LOW"
+ }
},
{
- "key": "python:S1244"
+ "key": "python:S1244",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
"key": "python:S125",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
"params": {
"exception": "(fmt|py\\w+):.*"
}
},
{
- "key": "python:S1313"
+ "key": "python:S1313",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "MINOR"
+ }
},
{
"key": "python:S1481",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ },
"params": {
"regex": "(_[a-zA-Z0-9_]*|dummy|unused|ignored)"
}
},
{
- "key": "python:S1515"
+ "key": "python:S1515",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
"key": "python:S1542",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
"params": {
"format": "^[a-z_][a-z0-9_]*$"
}
},
{
- "key": "python:S1607"
+ "key": "python:S1607",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1656"
+ "key": "python:S1656",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1700"
+ "key": "python:S1700",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1716"
+ "key": "python:S1716",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S1751"
+ "key": "python:S1751",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1763"
+ "key": "python:S1763",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1764"
+ "key": "python:S1764",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1845"
+ "key": "python:S1845",
+ "severity": "BLOCKER",
+ "impacts": {
+ "MAINTAINABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S1854"
+ "key": "python:S1854",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1862"
+ "key": "python:S1862",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1871"
+ "key": "python:S1871",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S1940"
+ "key": "python:S1940",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S2053"
+ "key": "python:S2053",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
"key": "python:S2068",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ },
"params": {
"credentialWords": "password,passwd,pwd,passphrase"
}
},
{
- "key": "python:S2077"
+ "key": "python:S2077",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S2092"
+ "key": "python:S2092",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "MINOR"
+ }
},
{
- "key": "python:S2115"
+ "key": "python:S2115",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S2159"
+ "key": "python:S2159",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S2190"
+ "key": "python:S2190",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S2201"
+ "key": "python:S2201",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S2208"
+ "key": "python:S2208",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S2245"
+ "key": "python:S2245",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S2257"
+ "key": "python:S2257",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S2275"
+ "key": "python:S2275",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S2612"
+ "key": "python:S2612",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S2638"
+ "key": "python:S2638",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
"key": "python:S2710",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ },
"params": {
"classParameterNames": "cls,mcs,metacls"
}
},
{
"key": "python:S2711",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ },
"prioritized": true
},
{
"key": "python:S2734",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ },
"prioritized": true
},
{
- "key": "python:S2737"
+ "key": "python:S2737",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S2755"
+ "key": "python:S2755",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S2757"
+ "key": "python:S2757",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S2761"
+ "key": "python:S2761",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S2772"
+ "key": "python:S2772",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S2823"
+ "key": "python:S2823",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S2836"
+ "key": "python:S2836",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S2876"
+ "key": "python:S2876",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S3329"
+ "key": "python:S3329",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S3330"
+ "key": "python:S3330",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "MINOR"
+ }
},
{
- "key": "python:S3358"
+ "key": "python:S3358",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S3403"
+ "key": "python:S3403",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S3457"
+ "key": "python:S3457",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S3516"
+ "key": "python:S3516",
+ "severity": "BLOCKER",
+ "impacts": {
+ "MAINTAINABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S3626"
+ "key": "python:S3626",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S3699"
+ "key": "python:S3699",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S3752"
+ "key": "python:S3752",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "MINOR"
+ }
},
{
"key": "python:S3776",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ },
"params": {
"threshold": "15"
}
},
{
- "key": "python:S3827"
+ "key": "python:S3827",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S3862"
+ "key": "python:S3862",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S3923"
+ "key": "python:S3923",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S3981"
+ "key": "python:S3981",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S3984"
+ "key": "python:S3984",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S3985"
+ "key": "python:S3985",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S4143"
+ "key": "python:S4143",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S4144"
+ "key": "python:S4144",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S4423"
+ "key": "python:S4423",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S4426"
+ "key": "python:S4426",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S4433"
+ "key": "python:S4433",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
"key": "python:S4487",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ },
"params": {
"enableSingleUnderscoreIssues": "false"
}
},
{
- "key": "python:S4502"
+ "key": "python:S4502",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S4507"
+ "key": "python:S4507",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "MINOR"
+ }
},
{
- "key": "python:S4790"
+ "key": "python:S4790",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S4828"
+ "key": "python:S4828",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S4830"
+ "key": "python:S4830",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S5042"
+ "key": "python:S5042",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S5122"
+ "key": "python:S5122",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "MINOR"
+ }
},
{
- "key": "python:S5247"
+ "key": "python:S5247",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S5332"
+ "key": "python:S5332",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S5344"
+ "key": "python:S5344",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S5361"
+ "key": "python:S5361",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5443"
+ "key": "python:S5443",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S5445"
+ "key": "python:S5445",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S5527"
+ "key": "python:S5527",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S5542"
+ "key": "python:S5542",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S5547"
+ "key": "python:S5547",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S5549"
+ "key": "python:S5549",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5603"
+ "key": "python:S5603",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5607"
+ "key": "python:S5607",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5632"
+ "key": "python:S5632",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5642"
+ "key": "python:S5642",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5644"
+ "key": "python:S5644",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5655"
+ "key": "python:S5655",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5659"
+ "key": "python:S5659",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S5685"
+ "key": "python:S5685",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S5704"
+ "key": "python:S5704",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5706"
+ "key": "python:S5706",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5707"
+ "key": "python:S5707",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S5708"
+ "key": "python:S5708",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5709"
+ "key": "python:S5709",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5712"
+ "key": "python:S5712",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5713"
+ "key": "python:S5713",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S5714"
+ "key": "python:S5714",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5717"
+ "key": "python:S5717",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5719"
+ "key": "python:S5719",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
"key": "python:S5720",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ },
"params": {
"ignoredDecorators": "abstractmethod"
}
},
{
- "key": "python:S5722"
+ "key": "python:S5722",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5724"
+ "key": "python:S5724",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5727"
+ "key": "python:S5727",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5747"
+ "key": "python:S5747",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5754"
+ "key": "python:S5754",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5756"
+ "key": "python:S5756",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5780"
+ "key": "python:S5780",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5781"
+ "key": "python:S5781",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5795"
+ "key": "python:S5795",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5796"
+ "key": "python:S5796",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5797"
+ "key": "python:S5797",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S5799"
+ "key": "python:S5799",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5806"
+ "key": "python:S5806",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5807"
+ "key": "python:S5807",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5828"
+ "key": "python:S5828",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5842"
+ "key": "python:S5842",
+ "severity": "MINOR",
+ "impacts": {
+ "RELIABILITY": "LOW"
+ }
},
{
"key": "python:S5843",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
"params": {
"maxComplexity": "20"
}
},
{
- "key": "python:S5845"
+ "key": "python:S5845",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S5850"
+ "key": "python:S5850",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5852"
+ "key": "python:S5852",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S5855"
+ "key": "python:S5855",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5857"
+ "key": "python:S5857",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S5860"
+ "key": "python:S5860",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5864"
+ "key": "python:S5864",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5868"
+ "key": "python:S5868",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5869"
+ "key": "python:S5869",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5886"
+ "key": "python:S5886",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5890"
+ "key": "python:S5890",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5899"
+ "key": "python:S5899",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5905"
+ "key": "python:S5905",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S5906"
+ "key": "python:S5906",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S5914"
+ "key": "python:S5914",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S5915"
+ "key": "python:S5915",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S5918"
+ "key": "python:S5918",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S5994"
+ "key": "python:S5994",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S5996"
+ "key": "python:S5996",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6001"
+ "key": "python:S6001",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6002"
+ "key": "python:S6002",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6019"
+ "key": "python:S6019",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6035"
+ "key": "python:S6035",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6252"
+ "key": "python:S6252",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "MINOR"
+ }
},
{
- "key": "python:S6265"
+ "key": "python:S6265",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6270"
+ "key": "python:S6270",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6275"
+ "key": "python:S6275",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6281"
+ "key": "python:S6281",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
- "key": "python:S6302"
+ "key": "python:S6302",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6303"
+ "key": "python:S6303",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6304"
+ "key": "python:S6304",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6308"
+ "key": "python:S6308",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6317"
+ "key": "python:S6317",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S6319"
+ "key": "python:S6319",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6321"
+ "key": "python:S6321",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "LOW"
+ }
},
{
- "key": "python:S6323"
+ "key": "python:S6323",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6326"
+ "key": "python:S6326",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6327"
+ "key": "python:S6327",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6328"
+ "key": "python:S6328",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6329"
+ "key": "python:S6329",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6330"
+ "key": "python:S6330",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6331"
+ "key": "python:S6331",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6332"
+ "key": "python:S6332",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6333"
+ "key": "python:S6333",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6353"
+ "key": "python:S6353",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S6377"
+ "key": "python:S6377",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MEDIUM"
+ }
},
{
- "key": "python:S6395"
+ "key": "python:S6395",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6396"
+ "key": "python:S6396",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6397"
+ "key": "python:S6397",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
"key": "python:S6418",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ },
"params": {
"credentialWords": "api[_.-]?key,auth,credential,secret,token",
"randomnessSensibility": "3.0"
}
},
{
- "key": "python:S6437"
+ "key": "python:S6437",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6463"
+ "key": "python:S6463",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "python:S6468"
+ "key": "python:S6468",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6537"
+ "key": "python:S6537",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6546"
+ "key": "python:S6546",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6552"
+ "key": "python:S6552",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6553"
+ "key": "python:S6553",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6556"
+ "key": "python:S6556",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6559"
+ "key": "python:S6559",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6560"
+ "key": "python:S6560",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6659"
+ "key": "python:S6659",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S6660"
+ "key": "python:S6660",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S6662"
+ "key": "python:S6662",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6663"
+ "key": "python:S6663",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6709"
+ "key": "python:S6709",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "LOW",
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6711"
+ "key": "python:S6711",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6714"
+ "key": "python:S6714",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "LOW",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6725"
+ "key": "python:S6725",
+ "severity": "BLOCKER",
+ "impacts": {
+ "MAINTAINABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S6727"
+ "key": "python:S6727",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "LOW",
+ "SECURITY": "LOW",
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6729"
+ "key": "python:S6729",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH",
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S6730"
+ "key": "python:S6730",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6734"
+ "key": "python:S6734",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S6735"
+ "key": "python:S6735",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6741"
+ "key": "python:S6741",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6742"
+ "key": "python:S6742",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6779"
+ "key": "python:S6779",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6781"
+ "key": "python:S6781",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "python:S6785"
+ "key": "python:S6785",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "python:S6786"
+ "key": "python:S6786",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MEDIUM"
+ }
},
{
- "key": "python:S6792"
+ "key": "python:S6792",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6794"
+ "key": "python:S6794",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6795"
+ "key": "python:S6795",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6796"
+ "key": "python:S6796",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6799"
+ "key": "python:S6799",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6882"
+ "key": "python:S6882",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "SECURITY": "LOW",
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S6883"
+ "key": "python:S6883",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S6887"
+ "key": "python:S6887",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH",
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6890"
+ "key": "python:S6890",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "LOW",
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S6894"
+ "key": "python:S6894",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM",
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6900"
+ "key": "python:S6900",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "SECURITY": "LOW",
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "python:S6903"
+ "key": "python:S6903",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM",
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6908"
+ "key": "python:S6908",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6911"
+ "key": "python:S6911",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6918"
+ "key": "python:S6918",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6919"
+ "key": "python:S6919",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6925"
+ "key": "python:S6925",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6928"
+ "key": "python:S6928",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM",
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6929"
+ "key": "python:S6929",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6969"
+ "key": "python:S6969",
+ "severity": "MINOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW"
+ }
},
{
- "key": "python:S6971"
+ "key": "python:S6971",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM",
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6972"
+ "key": "python:S6972",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6973"
+ "key": "python:S6973",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "LOW",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6974"
+ "key": "python:S6974",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6978"
+ "key": "python:S6978",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6979"
+ "key": "python:S6979",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6982"
+ "key": "python:S6982",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW",
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "python:S6983"
+ "key": "python:S6983",
+ "severity": "MINOR",
+ "impacts": {
+ "RELIABILITY": "LOW"
+ }
},
{
- "key": "python:S6984"
+ "key": "python:S6984",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "python:S6985"
+ "key": "python:S6985",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "CRITICAL"
+ }
},
{
"key": "python:S905",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ },
"params": {
- "ignoredOperators": "<<,>>,|",
- "reportOnStrings": "false"
+ "reportOnStrings": "false",
+ "ignoredOperators": "<<,>>,|"
}
},
{
- "key": "python:S930"
+ "key": "python:S930",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "python:S935"
+ "key": "python:S935",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "pythonbugs:S2259"
+ "key": "pythonbugs:S2259",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonbugs:S2583"
+ "key": "pythonbugs:S2583",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonbugs:S2589"
+ "key": "pythonbugs:S2589",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonbugs:S3518"
+ "key": "pythonbugs:S3518",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "pythonbugs:S5633"
+ "key": "pythonbugs:S5633",
+ "severity": "BLOCKER",
+ "impacts": {
+ "RELIABILITY": "BLOCKER"
+ }
},
{
- "key": "pythonbugs:S6417"
+ "key": "pythonbugs:S6417",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonbugs:S6464"
+ "key": "pythonbugs:S6464",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "pythonbugs:S6465"
+ "key": "pythonbugs:S6465",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
"key": "pythonbugs:S6466",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ },
"prioritized": true
},
{
- "key": "pythonbugs:S6886"
+ "key": "pythonbugs:S6886",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "pythonbugs:S6899"
+ "key": "pythonbugs:S6899",
+ "severity": "CRITICAL",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "pythonenterprise:S7181"
+ "key": "pythonenterprise:S7181",
+ "severity": "CRITICAL",
+ "impacts": {
+ "MAINTAINABILITY": "HIGH"
+ }
},
{
- "key": "pythonenterprise:S7182"
+ "key": "pythonenterprise:S7182",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonenterprise:S7187"
+ "key": "pythonenterprise:S7187",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonenterprise:S7189"
+ "key": "pythonenterprise:S7189",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonenterprise:S7191"
+ "key": "pythonenterprise:S7191",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonenterprise:S7192"
+ "key": "pythonenterprise:S7192",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonenterprise:S7193"
+ "key": "pythonenterprise:S7193",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonenterprise:S7195"
+ "key": "pythonenterprise:S7195",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM"
+ }
},
{
"key": "pythonenterprise:S7196",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "LOW",
+ "RELIABILITY": "MEDIUM"
+ },
"params": {
- "comparisonThreshold": "5",
- "nestedCallThreshold": "5"
+ "nestedCallThreshold": "5",
+ "comparisonThreshold": "5"
}
},
{
- "key": "pythonenterprise:S7468"
+ "key": "pythonenterprise:S7468",
+ "severity": "MAJOR",
+ "impacts": {
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "pythonenterprise:S7469"
+ "key": "pythonenterprise:S7469",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM",
+ "RELIABILITY": "HIGH"
+ }
},
{
- "key": "pythonenterprise:S7470"
+ "key": "pythonenterprise:S7470",
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonenterprise:S7471"
+ "key": "pythonenterprise:S7471",
+ "severity": "MINOR",
+ "impacts": {
+ "RELIABILITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ }
},
{
- "key": "pythonsecurity:S2076"
+ "key": "pythonsecurity:S2076",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S2078"
+ "key": "pythonsecurity:S2078",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S2083"
+ "key": "pythonsecurity:S2083",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S2091"
+ "key": "pythonsecurity:S2091",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S2631"
+ "key": "pythonsecurity:S2631",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "pythonsecurity:S3649"
+ "key": "pythonsecurity:S3649",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S5131"
+ "key": "pythonsecurity:S5131",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S5135"
+ "key": "pythonsecurity:S5135",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S5144"
+ "key": "pythonsecurity:S5144",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MEDIUM"
+ }
},
{
- "key": "pythonsecurity:S5145"
+ "key": "pythonsecurity:S5145",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "LOW"
+ }
},
{
- "key": "pythonsecurity:S5146"
+ "key": "pythonsecurity:S5146",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S5147"
+ "key": "pythonsecurity:S5147",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S5334"
+ "key": "pythonsecurity:S5334",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S5496"
+ "key": "pythonsecurity:S5496",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S6287"
+ "key": "pythonsecurity:S6287",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MEDIUM"
+ }
},
{
- "key": "pythonsecurity:S6350"
+ "key": "pythonsecurity:S6350",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MAJOR"
+ }
},
{
- "key": "pythonsecurity:S6639"
+ "key": "pythonsecurity:S6639",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MEDIUM"
+ }
},
{
- "key": "pythonsecurity:S6680"
+ "key": "pythonsecurity:S6680",
+ "severity": "CRITICAL",
+ "impacts": {
+ "SECURITY": "HIGH"
+ }
},
{
- "key": "pythonsecurity:S6776"
+ "key": "pythonsecurity:S6776",
+ "severity": "MINOR",
+ "impacts": {
+ "SECURITY": "LOW"
+ }
},
{
- "key": "pythonsecurity:S6839"
+ "key": "pythonsecurity:S6839",
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ }
},
{
- "key": "pythonsecurity:S7044"
+ "key": "pythonsecurity:S7044",
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MEDIUM"
+ }
+ }
+ ]
+ },
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true,
+ "children": {
+ "Olivier Way": {
+ "addedRules": [
+ {
+ "key": "python:S4784"
+ },
+ {
+ "key": "python:S1451",
+ "params": {
+ "isRegularExpression": "true",
+ "headerFormat": "(\\#!.+\\n)?(\\#.*\\n)?\\#\\ Copyright\\ \\(C\\)\\ ([12][0-9]{3}-)?2025\\ Olivier\\ Korach\\n\\#\\ mailto:olivier\\.korach\\ AT\\ gmail\\ DOT\\ com\\n\\#\\n\\#\\ This\\ program\\ is\\ free\\ software;\\ you\\ can\\ redistribute\\ it\\ and/or\\n\\#\\ modify\\ it\\ under\\ the\\ terms\\ of\\ the\\ GNU\\ Lesser\\ General\\ Public\\n\\#\\ License\\ as\\ published\\ by\\ the\\ Free\\ Software\\ Foundation;\\ either\\n\\#\\ version\\ 3\\ of\\ the\\ License,\\ or\\ \\(at\\ your\\ option\\)\\ any\\ later\\ version\\.\\n\\#\\n\\#\\ This\\ program\\ is\\ distributed\\ in\\ the\\ hope\\ that\\ it\\ will\\ be\\ useful,\\n\\#\\ but\\ WITHOUT\\ ANY\\ WARRANTY;\\ without\\ even\\ the\\ implied\\ warranty\\ of\\n\\#\\ MERCHANTABILITY\\ or\\ FITNESS\\ FOR\\ A\\ PARTICULAR\\ PURPOSE\\.\\ See\\ the\\ GNU\\n\\#\\ Lesser\\ General\\ Public\\ License\\ for\\ more\\ details\\.\\n\\#\\n\\#\\ You\\ should\\ have\\ received\\ a\\ copy\\ of\\ the\\ GNU\\ Lesser\\ General\\ Public\\ License\\n\\#\\ along\\ with\\ this\\ program;\\ if\\ not,\\ write\\ to\\ the\\ Free\\ Software\\ Foundation,\\n\\#\\ Inc\\.,\\ 51\\ Franklin\\ Street,\\ Fifth\\ Floor,\\ Boston,\\ MA\\ \\ 02110-1301,\\ USA\\.\\n\\#"
+ }
+ },
+ {
+ "key": "python:S6543"
+ },
+ {
+ "key": "python:S104",
+ "params": {
+ "maximum": "1000"
+ }
+ },
+ {
+ "key": "python:S5856"
+ },
+ {
+ "key": "python:NoSonar"
+ },
+ {
+ "key": "python:S4721"
+ },
+ {
+ "key": "python:S5953"
+ },
+ {
+ "key": "python:S2712"
+ },
+ {
+ "key": "python:S134",
+ "params": {
+ "max": "4"
+ }
+ },
+ {
+ "key": "python:S1128",
+ "severities": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
+ "prioritized": true
+ },
+ {
+ "key": "python:S4823"
+ }
+ ],
+ "modifiedRules": [
+ {
+ "key": "python:InequalityUsage",
+ "severities": {
+ "MAINTAINABILITY": "HIGH"
+ },
+ "prioritized": true
+ },
+ {
+ "key": "python:S3776",
+ "params": {
+ "threshold": "20"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "rpg": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "ruby": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "rust": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "scala": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "secrets": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true,
+ "children": {
+ "Corp Way": {
+ "addedRules": [
+ {
+ "key": "secrets:Corp_secrets_should_not_leak",
+ "params": {
+ "detectionSpecification": "matching:\n pattern: \"\\\\bCORP_SECRET_\\\\d{10}\\\\b\""
+ }
+ },
+ {
+ "key": "secrets:My_custom_secret_rule",
+ "severities": {
+ "SECURITY": "BLOCKER"
+ }
+ }
+ ]
}
- ]
+ }
+ }
+ },
+ "swift": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "terraform": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "text": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "ts": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "tsql": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "vb": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "vbnet": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "web": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "xml": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ },
+ "yaml": {
+ "Sonar way": {
+ "isDefault": true,
+ "isBuiltIn": true
+ }
+ }
+ },
+ "projects": {
+ "BANKING-AFRICA-OPS": {
+ "name": "Banking Africa operations",
+ "tags": "africa",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "BANKING-ASIA-OPS": {
+ "name": "BANKING-ASIA-OPS",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-INVESTMENT-ACQUISITIONS": {
+ "name": "BANKING-INVESTMENT-ACQUISITIONS",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-INVESTMENT-DILIGENCE": {
+ "name": "BANKING-INVESTMENT-DILIGENCE",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-INVESTMENT-EQUITY": {
+ "name": "BANKING-INVESTMENT-EQUITY",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-INVESTMENT-MERGER": {
+ "name": "BANKING-INVESTMENT-MERGER",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-PORTAL": {
+ "name": "BANKING-PORTAL",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ },
+ "branches": {
+ "comma,branch": {
+ "keepWhenInactive": true
+ },
+ "release-3.2": {
+ "keepWhenInactive": true
+ },
+ "main": {
+ "isMain": true
+ }
+ }
+ },
+ "BANKING-PRIVATE-ASSETS": {
+ "name": "BANKING-PRIVATE-ASSETS",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-PRIVATE-WEALTH": {
+ "name": "Wealth Management",
+ "tags": "banking, private-banking",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "BANKING-RETAIL-ATM": {
+ "name": "Retail - ATM",
+ "tags": "banking, retail",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "BANKING-RETAIL-CLERK": {
+ "name": "Retail Clerk",
+ "tags": "banking, retail",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "BANKING-RETAIL-WEB": {
+ "name": "BANKING-RETAIL-WEB",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-TRADING-EURO": {
+ "name": "BANKING-TRADING-EURO",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-TRADING-JAPAN": {
+ "name": "BANKING-TRADING-JAPAN",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "BANKING-TRADING-NASDAQ": {
+ "name": "BANKING-TRADING-NASDAQ",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "INSURANCE-HEALTH": {
+ "name": "INSURANCE-HEALTH",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "INSURANCE-HOME": {
+ "name": "INSURANCE-HOME",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "INSURANCE-LIFE": {
+ "name": "INSURANCE-LIFE",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "INSURANCE-PET": {
+ "name": "INSURANCE-PET",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "bad:stale-project": {
+ "name": "BANKING-ASIA-OPS",
+ "visibility": "private",
+ "links": [
+ {
+ "type": "homepage",
+ "name": "homepage",
+ "url": "http://maven.apache.org"
+ }
+ ],
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "olivier-k31581": "admin, user"
+ },
+ "groups": {
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, issueadmin, scan, securityhotspotadmin, user",
+ "sonar-users": "codeviewer, user"
+ }
+ }
+ },
+ "demo:github-actions-maven": {
+ "name": "demo:github-actions-maven",
+ "visibility": "private",
+ "binding": {
+ "key": "GitHub okorach",
+ "repository": "okorach/demo-actions-maven",
+ "summaryCommentEnabled": true
+ },
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "demo:github-actions-mono-cli": {
+ "name": "GitHub / Actions / monorepo CLI",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "master": {
+ "isMain": true
+ }
+ }
+ },
+ "demo:github-actions-mono-dotnet": {
+ "name": "GitHub / Actions / monorepo .Net Core",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "master": {
+ "isMain": true
+ }
+ },
+ "sonar.text.inclusions": "**/*.sh, **/*.bash, **/*.zsh, **/*.ksh, **/*.ps1, **/*.properties, **/*.conf, **/*.pem, **/*.config, .env, .aws/config, **/*"
+ },
+ "demo:github-actions-mono-gradle": {
+ "name": "GitHub / Actions / monorepo Gradle",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "master": {
+ "isMain": true
+ }
+ }
+ },
+ "demo:github-actions-mono-maven": {
+ "name": "demo:github-actions-mono-maven",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "master": {
+ "keepWhenInactive": true
+ },
+ "main": {
+ "isMain": true
+ }
+ }
+ },
+ "demo:gitlab-ci-maven": {
+ "name": "GitLab-CI / Maven",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "demo:gitlab:gradle": {
+ "name": "demo:gitlab:gradle",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "demo:gitlab:scanner-cli": {
+ "name": "demo:gitlab:scanner-cli",
+ "visibility": "private",
+ "binding": {
+ "key": "gitlab.com",
+ "repository": "30584574"
+ },
+ "permissions": {
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "master": {
+ "keepWhenInactive": true
+ },
+ "main": {
+ "isMain": true
+ }
+ }
+ },
+ "demo:java-security": {
+ "name": "security",
+ "visibility": "private",
+ "links": [
+ {
+ "type": "homepage",
+ "name": "homepage",
+ "url": "http://maven.apache.org"
+ }
+ ],
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "demo:jcl": {
+ "name": "JCL Demo",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "demo:secrets": {
+ "name": "Secrets detection",
+ "tags": "demo",
+ "visibility": "private",
+ "qualityProfiles": {
+ "secrets": "Corp Way"
+ },
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "sonar.text.inclusions": "**/*, **/*.bash, **/*.conf, **/*.config, **/*.ksh, **/*.pem, **/*.properties, **/*.ps1, **/*.sh, **/*.zsh, .aws/config, .env, **/*.xml"
+ },
+ "no-scm": {
+ "name": "no-scm",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "okorach-org_pr-demo_3a1857ec-cebc-49f2-96ac-9bbc99111469": {
+ "name": "pr-demo",
+ "visibility": "private",
+ "binding": {
+ "key": "GitHub okorach-org",
+ "repository": "okorach-org/pr-demo",
+ "summaryCommentEnabled": true
+ },
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "master": {
+ "isMain": true
+ }
+ }
+ },
+ "okorach_audio-video-tools": {
+ "name": "okorach_audio-video-tools",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "main": {
+ "isMain": true
+ },
+ "develop": {
+ "keepWhenInactive": true
+ }
+ }
+ },
+ "okorach_demo-gitlabci-cli_e81d5112-e681-44b2-aee4-62b56c8ac5cb": {
+ "name": "okorach_demo-gitlabci-cli_e81d5112-e681-44b2-aee4-62b56c8ac5cb",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "okorach_demo-gitlabci-maven": {
+ "name": "okorach_demo-gitlabci-maven",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "okorach_sonar-tools": {
+ "name": "Sonar Tools",
+ "tags": "python",
+ "visibility": "private",
+ "qualityProfiles": {
+ "py": "Olivier Way"
+ },
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user",
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "develop": {
+ "newCodePeriod": "REFERENCE_BRANCH = master",
+ "keepWhenInactive": true
+ },
+ "master": {
+ "isMain": true
+ }
+ },
+ "qualityGate": "\ud83e\udd47 1 - Corp Gold",
+ "sonar.autodetect.ai.code": "true",
+ "sonar.cfamily.ignoreHeaderComments": "false",
+ "sonar.issue.ignore.multicriteria": [
+ {
+ "resourceKey": "**/*.java",
+ "ruleKey": "java:S1195"
+ },
+ {
+ "resourceKey": "**/*.py",
+ "ruleKey": "python:S211"
+ }
+ ]
+ },
+ "project-without-analyses": {
+ "name": "Project without analyses",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "project1": {
+ "name": "Project 1",
+ "visibility": "private",
+ "newCodePeriod": "PREVIOUS_VERSION",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
},
- "Sonar way": {
- "children": {
- "Olivier Way": {
- "addedRules": [
- {
- "key": "python:S4784"
- },
- {
- "key": "python:S1451"
- },
- {
- "key": "python:S6543"
- },
- {
- "key": "python:S5856"
- },
- {
- "key": "python:NoSonar"
- },
- {
- "key": "python:S4721"
- },
- {
- "key": "python:S5953"
- },
- {
- "key": "python:S2712"
- },
- {
- "key": "python:S134"
- },
- {
- "key": "python:S1128",
- "prioritized": true,
- "severities": {
- "MAINTAINABILITY": "MEDIUM"
- }
- },
- {
- "key": "python:S4823"
- }
- ],
- "modifiedRules": [
- {
- "key": "python:InequalityUsage",
- "prioritized": true,
- "severities": {
- "MAINTAINABILITY": "HIGH"
- }
- },
- {
- "key": "python:S3776",
- "params": {
- "threshold": "20"
- }
- }
- ]
+ "branches": {
+ "comma,branch": {
+ "keepWhenInactive": true
+ },
+ "release-2.x": {
+ "keepWhenInactive": true
+ },
+ "develop": {
+ "newCodePeriod": "REFERENCE_BRANCH = main",
+ "keepWhenInactive": true
+ },
+ "release-3.x": {
+ "newCodePeriod": "NUMBER_OF_DAYS = 80",
+ "keepWhenInactive": true
+ },
+ "main": {
+ "newCodePeriod": "PREVIOUS_VERSION",
+ "isMain": true
+ }
+ },
+ "webhooks": {
+ "Jenkins Team 1": {
+ "url": "https://jenkins.team1.server/sonar-webhook/"
+ }
+ },
+ "sonar.coverage.jacoco.xmlReportPaths": "**/*jacoco*.xml"
+ },
+ "project2": {
+ "name": "Project 2",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "develop": {
+ "keepWhenInactive": true
+ },
+ "main": {
+ "isMain": true
+ }
+ }
+ },
+ "project3": {
+ "name": "Project 3",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "main": {
+ "isMain": true
+ },
+ "develop": {
+ "keepWhenInactive": true
+ }
+ }
+ },
+ "project4": {
+ "name": "Project 4",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "develop": {
+ "keepWhenInactive": true
+ },
+ "main": {
+ "isMain": true
+ }
+ }
+ },
+ "proyecto5": {
+ "name": "Project 5",
+ "tags": "python",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "syncer": "codeviewer, issueadmin, securityhotspotadmin, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ },
+ "branches": {
+ "develop": {
+ "keepWhenInactive": true
+ },
+ "main": {
+ "isMain": true
+ }
+ }
+ },
+ "web-backend": {
+ "name": "Web back-end",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user"
+ },
+ "groups": {
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ },
+ "web-frontend": {
+ "name": "Web front-end",
+ "tags": "3ds",
+ "visibility": "private",
+ "links": [
+ {
+ "type": "homepage",
+ "name": "homepage",
+ "url": "https://owasp-juice.shop"
+ },
+ {
+ "type": "scm",
+ "name": "scm",
+ "url": "https://github.com/juice-shop/juice-shop.git"
+ },
+ {
+ "type": "issue",
+ "name": "issue",
+ "url": "https://github.com/juice-shop/juice-shop/issues"
+ }
+ ],
+ "permissions": {
+ "users": {
+ "admin": "admin, codeviewer, user"
+ },
+ "groups": {
+ "developers": "codeviewer, user",
+ "project-admins": "admin, codeviewer, user",
+ "security-auditors": "codeviewer, issueadmin, securityhotspotadmin, user",
+ "sonar-administrators": "admin, codeviewer, user",
+ "sonar-users": "user",
+ "tech-leads": "codeviewer, issueadmin, user"
+ }
+ }
+ }
+ },
+ "applications": {
+ "APPY": {
+ "name": "App Test 2",
+ "visibility": "public",
+ "branches": {
+ "main": {
+ "isMain": true
+ }
+ },
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin"
+ }
+ }
+ },
+ "APP_TEST": {
+ "name": "Test App",
+ "tags": "africa",
+ "visibility": "private",
+ "branches": {
+ "main": {
+ "projects": {
+ "ai-code-fix": "main",
+ "BANKING-AFRICA-OPS": "main",
+ "dvpa": "main"
+ },
+ "isMain": true
+ },
+ "Other Branch": {
+ "projects": {
+ "ai-code-fix": "main",
+ "BANKING-AFRICA-OPS": "main",
+ "dvpa": "main"
}
},
- "isBuiltIn": true,
- "isDefault": true
+ "BRANCH foo": {
+ "projects": {
+ "ai-code-fix": "main",
+ "BANKING-AFRICA-OPS": "main",
+ "dvpa": "main"
+ }
+ },
+ "some-branch": {
+ "projects": {
+ "ai-code-fix": "main",
+ "BANKING-AFRICA-OPS": "main",
+ "dvpa": "main"
+ }
+ }
+ },
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin",
+ "sonar-users": "user"
+ }
}
},
- "rpg": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "App_with_no_perms": {
+ "name": "App with no perms",
+ "visibility": "private",
+ "branches": {
+ "main": {
+ "isMain": true
+ }
+ },
+ "permissions": {
+ "users": {
+ "admin": "admin, user"
+ },
+ "groups": {}
}
},
- "ruby": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "FE-BE": {
+ "name": "Front-end / Back-end",
+ "visibility": "private",
+ "description": "A web app with a separate front-end and back-end project",
+ "branches": {
+ "main": {
+ "projects": {
+ "web-backend": "main",
+ "web-frontend": "main"
+ },
+ "isMain": true
+ }
+ },
+ "permissions": {
+ "users": {
+ "admin": "admin, user"
+ },
+ "groups": {
+ "developers": "user",
+ "project-admins": "admin, user",
+ "security-auditors": "user",
+ "sonar-administrators": "admin, user",
+ "tech-leads": "user"
+ }
}
},
- "rust": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "MON": {
+ "name": "My monorepo",
+ "visibility": "public",
+ "branches": {
+ "main": {
+ "projects": {
+ "project1": "main",
+ "project2": "main",
+ "project3": "main",
+ "project4": "main",
+ "proyecto5": "main"
+ },
+ "isMain": true
+ }
+ },
+ "permissions": {
+ "groups": {
+ "project-admins": "admin",
+ "sonar-administrators": "admin"
+ }
}
- },
- "scala": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ }
+ },
+ "portfolios": {
+ "All": {
+ "name": "Company global portfolio",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin"
+ }
+ },
+ "portfolios": {
+ "Other_unclassified_projects": {
+ "name": "Other unclassified projects",
+ "projects": {
+ "rest": true,
+ "branch": "-DEFAULT_BRANCH-"
+ }
+ },
+ "Banking": {
+ "byReference": true
+ },
+ "CORP-INSURANCE": {
+ "byReference": true
+ }
}
},
- "secrets": {
- "Sonar way": {
- "children": {
- "Corp Way": {
- "addedRules": [
- {
- "key": "secrets:Corp_secrets_should_not_leak"
- },
- {
- "key": "secrets:My_custom_secret_rule",
- "severities": {
- "SECURITY": "BLOCKER"
- }
+ "Banking": {
+ "name": "Banking",
+ "visibility": "private",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin, user",
+ "sonar-users": "user"
+ }
+ },
+ "portfolios": {
+ "Investment_Banking": {
+ "name": "Investment Banking",
+ "portfolios": {
+ "Corporate_Mergers_and_Acquisitions": {
+ "name": "Corporate Mergers and Acquisitions",
+ "projects": {
+ "regexp": ".*MERgER.*",
+ "branch": "-DEFAULT_BRANCH-"
}
- ]
+ },
+ "Corporate_loans": {
+ "name": "Corporate loans"
+ }
+ },
+ "projects": {
+ "regexp": ".*-INVESTMENT-.*",
+ "branch": "develop"
}
},
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "swift": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "terraform": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- },
- "text": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "Retail_Banking": {
+ "name": "Retail Banking",
+ "projects": {
+ "regexp": ".*-RETAIL-.*",
+ "branch": "-DEFAULT_BRANCH-"
+ }
+ },
+ "Private_Banking": {
+ "byReference": true
+ }
}
},
- "ts": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "CEO_Strategic_Projects": {
+ "name": "CEO Strategic Projects",
+ "visibility": "private",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin",
+ "sonar-users": "user"
+ }
}
},
- "tsql": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "CORP-INSURANCE": {
+ "name": "Insurance",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin"
+ }
+ },
+ "portfolios": {
+ "Other_Insurance": {
+ "name": "Other Insurance"
+ },
+ "CORP-INSURANCE-LIFE": {
+ "byReference": true
+ },
+ "CORP-INSURANCE-HEALTH": {
+ "byReference": true
+ }
}
},
- "vb": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "CORP-INSURANCE-HEALTH": {
+ "name": "Health Insurance",
+ "visibility": "private",
+ "permissions": {
+ "users": {
+ "michal": "user",
+ "olivier": "admin",
+ "syncer": "user"
+ },
+ "groups": {
+ "sonar-administrators": "admin, user",
+ "sonar-users": "user",
+ "z comma , group": "user"
+ }
+ },
+ "projects": {
+ "regexp": ".*HEALTH.*",
+ "branch": "-DEFAULT_BRANCH-"
}
},
- "vbnet": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "CORP-INSURANCE-LIFE": {
+ "name": "Life Insurance",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin"
+ }
+ },
+ "projects": {
+ "manual": {
+ "INSURANCE-PET": "-DEFAULT_BRANCH-",
+ "INSURANCE-LIFE": "-DEFAULT_BRANCH-"
+ }
}
},
- "web": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "DEMOS": {
+ "name": "Demo projects",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-users": "admin"
+ }
+ },
+ "projects": {
+ "tags": "demo",
+ "branch": "-DEFAULT_BRANCH-"
}
},
- "xml": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
+ "PORTFOLIO-OLIVIER": {
+ "name": "Olivier's projects",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin"
+ }
+ },
+ "projects": {
+ "regexp": ".*okorach.*",
+ "branch": "-DEFAULT_BRANCH-"
}
},
- "yaml": {
- "Sonar way": {
- "isBuiltIn": true,
- "isDefault": true
- }
- }
- },
- "rules": {
- "extended": {
- "csharpsquid:S3884": {
- "tags": "ubs-critical"
- },
- "java:S115": {
- "description": "En Francais: Les constantes doivent suivre des conventions de nommage"
- },
- "java:S1451": {
- "description": "Avec la meme version en francais"
- },
- "java:S1698": {
- "description": "Traduction francaise de la regle:\nIl ne faut pas comparer les objets avec == si la methode equals n'a pas ete surchargee"
- },
- "python:S1721": {
- "description": "Actually in the context of an ``if``, parens are necessary:\n``if value in (\"foo\", \"bar\")`` for instance",
- "tags": "improve-description"
+ "PORTFOLIO-PYTHON": {
+ "name": "Python Projects",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin"
+ }
},
- "python:S2737": {
- "tags": "best-practice"
+ "projects": {
+ "tags": "python",
+ "branch": "-DEFAULT_BRANCH-"
}
},
- "instantiated": {
- "java:Don_t_be_rude": {
- "isTemplate": false,
- "language": "java",
- "params": {
- "regularExpression": "(fuck|shit|merde)"
- },
- "severities": {
- "MAINTAINABILITY": "MEDIUM",
- "SECURITY": "LOW"
+ "PORTFOLIO_ALL": {
+ "name": "All projects",
+ "visibility": "private",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin, user",
+ "sonar-users": "user"
}
},
- "jcl:Track_usage_of_rogue_programs": {
- "isTemplate": false,
- "language": "jcl",
- "params": {
- "programName": "ROGUEPROG",
- "replacementProgramName": "OKPROG"
- },
- "severities": {
- "MAINTAINABILITY": "LOW",
- "RELIABILITY": "MEDIUM",
- "SECURITY": "HIGH"
+ "projects": {
+ "rest": true,
+ "branch": "-DEFAULT_BRANCH-"
+ }
+ },
+ "PORTFOLIO_APPS": {
+ "name": "Portfolio of Apps",
+ "visibility": "private",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin",
+ "sonar-users": "user"
}
},
- "python:Do_not_use_offending_words_for_symbols_or_comments": {
- "isTemplate": false,
- "language": "py",
- "params": {
- "message": "Don't write fuck or shit in code",
- "regularExpression": "(fuck|shit)"
- },
- "severities": {
- "MAINTAINABILITY": "MEDIUM"
+ "applications": {
+ "APPY": "-DEFAULT_BRANCH-",
+ "APP_TEST": "-DEFAULT_BRANCH-, Other Branch"
+ }
+ },
+ "PORTFOLIO_MULTI_BRANCHES": {
+ "name": "Portfolios multiple branches",
+ "visibility": "private",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin",
+ "sonar-users": "user"
}
},
- "python:Do_not_use_offensive_words_in_comments": {
- "isTemplate": false,
- "language": "py",
- "params": {
- "message": "Don't use shit or fuck in comments",
- "regularExpression": "(shit|fuck)"
- },
- "severities": {
- "MAINTAINABILITY": "MEDIUM"
+ "projects": {
+ "manual": {
+ "BANKING-INVESTMENT-EQUITY": "-DEFAULT_BRANCH-",
+ "BANKING-INVESTMENT-MERGER": "-DEFAULT_BRANCH-",
+ "BANKING-PORTAL": [
+ "comma,branch",
+ "main",
+ "release-3.2"
+ ]
+ }
+ }
+ },
+ "PORT_FAV_PROJECTS": {
+ "name": "My favorite projects",
+ "visibility": "private",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin",
+ "sonar-users": "user"
}
},
- "secrets:Corp_secrets_should_not_leak": {
- "isTemplate": false,
- "language": "secrets",
- "params": {
- "detectionSpecification": "matching:\n pattern: \"\\\\bCORP_SECRET_\\\\d{10}\\\\b\""
- },
- "severities": {
- "SECURITY": "BLOCKER"
+ "projects": {
+ "manual": {
+ "code-variants": "-DEFAULT_BRANCH-",
+ "demo-rules": "-DEFAULT_BRANCH-",
+ "ai-code-fix": "-DEFAULT_BRANCH-",
+ "mute-in-ide": "-DEFAULT_BRANCH-",
+ "creedengo-issues": "-DEFAULT_BRANCH-",
+ "demo:autoconfig": "-DEFAULT_BRANCH-",
+ "demo:coverage": "-DEFAULT_BRANCH-"
+ }
+ }
+ },
+ "Private_Banking": {
+ "name": "Private Banking",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-administrators": "admin"
}
},
- "secrets:My_custom_secret_rule": {
- "isTemplate": false,
- "language": "secrets",
- "params": {
- "detectionSpecification": "matching:\n pattern: \"\\\\bCORP_SECRET_\\\\d{10}\\\\b\"\n context:\n patternAround:\n pattern: \"\"\n maxLineDistance: 10\n maxCharDistance: 500"
- },
- "severities": {
- "SECURITY": "HIGH"
+ "projects": {
+ "tags": "private-banking",
+ "branch": "-DEFAULT_BRANCH-"
+ }
+ },
+ "Rik_all_projects": {
+ "name": "Rik all projects",
+ "visibility": "public",
+ "permissions": {
+ "groups": {
+ "sonar-users": "admin"
}
+ },
+ "projects": {
+ "regexp": ".*",
+ "branch": "-DEFAULT_BRANCH-"
}
}
},
"users": {
"admin": {
+ "name": "Administrator",
"email": "admin@acme.com",
- "groups": "ci-tools, security-auditors, sonar-administrators, tech-leads",
"local": true,
- "name": "Administrator",
- "scmAccounts": "admin-acme, administrator-acme"
+ "scmAccounts": "admin-acme, administrator-acme",
+ "groups": "ci-tools, security-auditors, sonar-administrators, tech-leads"
},
"ado": {
- "groups": "ci-tools",
+ "name": "Azure DevOps Service Account",
"local": true,
- "name": "Azure DevOps Service Account"
+ "groups": "ci-tools"
},
"bbTEMPaa": {
- "local": true,
- "name": "User name bbTEMPaa"
+ "name": "User name bbTEMPaa",
+ "local": true
},
"james": {
- "groups": "sonar-administrators",
+ "name": "James Amable",
"local": true,
- "name": "James Amable"
+ "groups": "sonar-administrators"
},
"michal": {
- "groups": "language-experts, tech-leads",
+ "name": "michal",
"local": true,
- "name": "michal"
+ "groups": "language-experts, tech-leads"
},
"olivier": {
- "groups": "project-admins, tech-leads",
+ "name": "olivier",
"local": true,
- "name": "olivier"
+ "groups": "project-admins, tech-leads"
},
"olivier-k31581": {
+ "name": "Olivier K",
"email": "olivier.korach@sonarsource.com",
- "groups": "language-experts, project-admins, quality-managers",
- "name": "Olivier K"
+ "groups": "language-experts, project-admins, quality-managers"
},
"olivier-korach22656": {
+ "name": "Olivier Korach",
"email": "olivier.korach@gmail.com",
- "groups": "gl-admins, gl-admins/gl-devs",
- "name": "Olivier Korach"
+ "groups": "gl-admins, gl-admins/gl-devs"
},
"syncer": {
- "groups": "developers, language-experts, quality-managers, security-auditors, sonar-administrators, tech-leads",
+ "name": "syncer",
"local": true,
- "name": "syncer"
+ "groups": "developers, language-experts, quality-managers, security-auditors, sonar-administrators, tech-leads"
+ }
+ },
+ "groups": {
+ "ci-tools": "Service accounts for CI tools",
+ "developers": "Developers",
+ "gl-admins": "",
+ "gl-admins/gl-devs": "",
+ "language-experts": "Language experts in charge of defining the company governance in terms of Quality Profiles (rulesets enforced in the company)",
+ "project-admins": "Project administrators in charge of project configuration",
+ "quality-managers": "Quality Managers in charge of defining company governance in terms of quality gates",
+ "security-auditors": "Security Auditors in charge of reviewing security issues",
+ "sonar-administrators": "SonarQube administrators",
+ "tech-leads": "Senior developers in charge of reviewing issues",
+ "z comma , group": ""
+ },
+ "rules": {
+ "instantiated": {
+ "jcl:Track_usage_of_rogue_programs": {
+ "severity": "INFO",
+ "impacts": {
+ "MAINTAINABILITY": "LOW",
+ "SECURITY": "HIGH",
+ "RELIABILITY": "MEDIUM"
+ },
+ "params": {
+ "programName": "ROGUEPROG",
+ "replacementProgramName": "OKPROG"
+ },
+ "language": "jcl",
+ "templateKey": "jcl:S3688"
+ },
+ "java:Don_t_be_rude": {
+ "severity": "MAJOR",
+ "impacts": {
+ "SECURITY": "MEDIUM",
+ "MAINTAINABILITY": "MEDIUM"
+ },
+ "params": {
+ "message": "Hey don't be rude!",
+ "regularExpression": "(fuck|shit|merde)"
+ },
+ "language": "java",
+ "templateKey": "java:S124"
+ },
+ "python:Do_not_use_offensive_words_in_comments": {
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
+ "params": {
+ "message": "Don't use shit or fuck in comments",
+ "regularExpression": "(shit|fuck)"
+ },
+ "language": "py",
+ "templateKey": "python:CommentRegularExpression"
+ },
+ "python:Do_not_use_offending_words_for_symbols_or_comments": {
+ "severity": "MAJOR",
+ "impacts": {
+ "MAINTAINABILITY": "MEDIUM"
+ },
+ "params": {
+ "message": "Don't write fuck or shit in code",
+ "regularExpression": "(fuck|shit)"
+ },
+ "language": "py",
+ "templateKey": "python:CommentRegularExpression"
+ },
+ "secrets:Siemens_custom_keys_should_not_leak": {
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ },
+ "params": {
+ "detectionSpecification": "SIEMENS_\\d\\d\\d\\d\\d\\d\\d\\d"
+ },
+ "language": "secrets",
+ "templateKey": "secrets:S6784"
+ },
+ "secrets:Corp_secrets_should_not_leak": {
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "BLOCKER"
+ },
+ "params": {
+ "detectionSpecification": "matching:\n pattern: \"\\\\bCORP_SECRET_\\\\d{10}\\\\b\""
+ },
+ "language": "secrets",
+ "templateKey": "secrets:S6784"
+ },
+ "secrets:My_custom_secret_rule": {
+ "severity": "BLOCKER",
+ "impacts": {
+ "SECURITY": "HIGH"
+ },
+ "params": {
+ "detectionSpecification": "matching:\n pattern: \"\\\\bCORP_SECRET_\\\\d{10}\\\\b\"\n context:\n patternAround:\n pattern: \"\"\n maxLineDistance: 10\n maxCharDistance: 500"
+ },
+ "language": "secrets",
+ "templateKey": "secrets:S6784"
+ }
+ },
+ "extended": {
+ "csharpsquid:S3884": {
+ "tags": "ubs-critical"
+ },
+ "java:S1698": {
+ "description": "Traduction francaise de la regle:\nIl ne faut pas comparer les objets avec == si la methode equals n'a pas ete surchargee"
+ },
+ "java:S115": {
+ "description": "En Francais: Les constantes doivent suivre des conventions de nommage"
+ },
+ "java:S1451": {
+ "description": "Avec la meme version en francais"
+ },
+ "python:S2737": {
+ "tags": "best-practice"
+ },
+ "python:S1721": {
+ "tags": "improve-description",
+ "description": "Actually in the context of an ``if``, parens are necessary:\n``if value in (\"foo\", \"bar\")`` for instance"
+ }
}
}
}
diff --git a/test/unit/test_config.py b/test/unit/test_config.py
index edaf8bf10..37538f048 100644
--- a/test/unit/test_config.py
+++ b/test/unit/test_config.py
@@ -27,9 +27,10 @@
import utilities as tutil
from sonar import errcodes as e
-from sonar import portfolios, applications
+from sonar import portfolios, applications, projects
from sonar import logging
import sonar.util.constants as c
+from sonar import utilities as util
import cli.options as opt
from cli import config
@@ -205,3 +206,22 @@ def test_config_import_apps() -> None:
app_list = applications.get_list(tutil.TEST_SQ)
assert len(app_list) == len(json_config)
assert sorted(app_list.keys()) == sorted(json_config.keys())
+
+
+def test_config_import_projects() -> None:
+ """TEsts that the import of projects config works"""
+ config_file = f"{tutil.FILES_ROOT}/config.json"
+ json_config = tutil.read_json(config_file)["projects"]
+
+ # delete all projects in test except the testsync one
+ for p in projects.get_list(tutil.TEST_SQ).values():
+ if p.key != "TESTSYNC":
+ p.delete()
+ # Import config
+ cmd = f"{CMD} {tutil.SQS_TEST_OPTS} --{opt.IMPORT} --{opt.REPORT_FILE} {config_file} --{opt.WHAT} {opt.WHAT_PROJECTS}"
+ assert tutil.run_cmd(config.main, cmd) == e.OK
+
+ # Compare projects
+ project_list = projects.get_list(tutil.TEST_SQ)
+ assert len(project_list) == len(json_config)
+ assert sorted(project_list.keys()) == sorted(json_config.keys())