Skip to content

Commit eb48dac

Browse files
authored
Export impacts in deterministic order, remove default impact (#2075)
* Fixes #2074 * Quality pass
1 parent 3deceac commit eb48dac

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

sonar/util/common_json_helper.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
from typing import Any
2323
from sonar import utilities
24-
from sonar import logging as log
2524

2625

2726
def convert_common_fields(json_data: dict[str, Any], with_permissions: bool = True) -> dict[str, Any]:

sonar/util/qualityprofile_helper.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
from typing import Any
2323
from sonar import utilities as util
24+
from sonar.util import constants as c
2425
from sonar.util import types
2526
from sonar.util import common_json_helper
2627

@@ -61,6 +62,12 @@ def __convert_qp_json(qp_json: dict[str, Any]) -> list[dict[str, Any]]:
6162
if "severities" in r:
6263
r["impacts"] = r["severities"]
6364
r.pop("severities")
65+
if "impacts" in r:
66+
r["impacts"] = {
67+
k: r["impacts"][k]
68+
for k in ("SECURITY", "RELIABILITY", "MAINTAINABILITY")
69+
if k in r["impacts"] and r["impacts"][k] != c.DEFAULT
70+
}
6471
if "children" in v:
6572
v["children"] = __convert_qp_json(v["children"])
6673
qp_json[k] = util.order_keys(common_json_helper.convert_common_fields(v, with_permissions=False), *KEY_ORDER)

sonar/util/rule_helper.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,19 @@
2121

2222
from typing import Any
2323
from sonar import utilities
24+
from sonar.util import constants as c
2425
from sonar.util import common_json_helper
2526

2627

2728
def convert_rule_json(old_json: dict[str, Any]) -> dict[str, Any]:
2829
"""Converts a rule JSON from old to new export format"""
29-
return common_json_helper.convert_common_fields(old_json)
30+
old_json = common_json_helper.convert_common_fields(old_json)
31+
if "impacts" in old_json:
32+
old_json["impacts"] = {
33+
k: old_json["impacts"][k]
34+
for k in ("SECURITY", "RELIABILITY", "MAINTAINABILITY")
35+
if k in old_json["impacts"] and old_json["impacts"][k] != c.DEFAULT
36+
}
3037

3138

3239
def convert_rules_json(old_json: dict[str, Any]) -> dict[str, Any]:

0 commit comments

Comments
 (0)