diff options
Diffstat (limited to 'server')
7 files changed, 21 insertions, 7 deletions
diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/QProfileChangeMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/QProfileChangeMapper.xml index 3e946ea0e4b..fbc039a6a62 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/QProfileChangeMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/QProfileChangeMapper.xml @@ -88,7 +88,8 @@ <if test="query.filterMode == 'MQR'"> and ( qpc.change_type in ('ACTIVATED', 'DEACTIVATED') or rc.uuid is not null - or qpc.change_data like '%param_%') + or qpc.change_data like '%param_%' + or qpc.change_data like '%prioritizedRule%') </if> </sql> diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java b/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java index 024fc814594..72d451e590e 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java @@ -186,6 +186,9 @@ public class ActiveRuleChange { if (StringUtils.isNotEmpty(severity)) { data.put("severity", severity); } + if (prioritizedRule != null) { + data.put("prioritizedRule", prioritizedRule.toString()); + } dto.setData(data); return dto; } diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java index ca26c5a48a7..35c9fedc3c9 100644 --- a/server/sonar-server-common/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java +++ b/server/sonar-server-common/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java @@ -22,7 +22,7 @@ package org.sonar.server.qualityprofile; import java.util.List; import java.util.Map; import java.util.Set; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.sonar.api.issue.impact.Severity; import org.sonar.api.issue.impact.SoftwareQuality; import org.sonar.api.rule.RuleKey; @@ -53,6 +53,7 @@ public class ActiveRuleChangeTest { new RuleDto().replaceAllDefaultImpacts(List.of(new ImpactDto(SoftwareQuality.RELIABILITY, Severity.LOW), new ImpactDto(SoftwareQuality.MAINTAINABILITY, Severity.HIGH)))); underTest.setOldImpacts(Map.of(SoftwareQuality.SECURITY, Severity.LOW, SoftwareQuality.MAINTAINABILITY, Severity.HIGH)); underTest.setNewImpacts(Map.of(SoftwareQuality.RELIABILITY, Severity.HIGH, SoftwareQuality.MAINTAINABILITY, Severity.BLOCKER)); + underTest.setPrioritizedRule(true); QProfileChangeDto result = underTest.toDto(A_USER_UUID); @@ -60,6 +61,7 @@ public class ActiveRuleChangeTest { assertThat(result.getRulesProfileUuid()).isEqualTo(profile.getRulesProfileUuid()); assertThat(result.getUserUuid()).isEqualTo(A_USER_UUID); assertThat(result.getDataAsMap()).containsEntry("ruleUuid", ruleUuid); + assertThat(result.getData()).contains("prioritizedRule=true"); Set<RuleImpactChangeDto> ruleImpactChanges = result.getRuleChange().getRuleImpactChanges(); diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/QProfileRulesImplIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/QProfileRulesImplIT.java index 40713bf6804..29250034530 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/QProfileRulesImplIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/QProfileRulesImplIT.java @@ -102,7 +102,7 @@ class QProfileRulesImplIT { assertThat(db.getDbClient().qProfileChangeDao().selectByQuery(db.getSession(), new QProfileChangeQuery(qProfile.getKee()))) .extracting(QProfileChangeDto::getUserUuid, QProfileChangeDto::getDataAsMap) - .containsExactlyInAnyOrder(tuple(user.getUuid(), ImmutableMap.of("ruleUuid", rule.getUuid(), "severity", Severity.CRITICAL))); + .containsExactlyInAnyOrder(tuple(user.getUuid(), ImmutableMap.of("prioritizedRule","false","ruleUuid", rule.getUuid(), "severity", Severity.CRITICAL))); verify(qualityProfileChangeEventService).distributeRuleChangeEvent(any(), any(), eq(qProfile.getLanguage())); } } diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java index efad6972423..2f60b842f40 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java @@ -88,6 +88,7 @@ class ChangelogActionIT { insertChange(profile, ActiveRuleChange.Type.ACTIVATED, user, ImmutableMap.of( "ruleUuid", rule.getUuid(), "severity", "MINOR", + "prioritizedRule", "true", "param_foo", "foo_value", "param_bar", "bar_value"), ruleChange); @@ -125,6 +126,7 @@ class ChangelogActionIT { ], "params": { "severity": "MINOR", + "prioritizedRule": "true", "foo": "foo_value", "bar": "bar_value", "oldCleanCodeAttribute": "CLEAR", @@ -687,7 +689,7 @@ class ChangelogActionIT { .setUserUuid(user1.getUuid()) .setSqVersion("8.3.1") .setChangeType(ActiveRuleChange.Type.ACTIVATED.name()) - .setData(ImmutableMap.of("severity", "CRITICAL", "ruleUuid", rule1.getUuid()))); + .setData(ImmutableMap.of("severity", "CRITICAL", "prioritizedRule", "true", "ruleUuid", rule1.getUuid()))); system2.setNow(DateUtils.parseDateTime("2015-02-23T17:58:18+0100").getTime()); RuleDto rule2 = db.rules().insert(RuleKey.of("java", "S2162"), r -> r.setName("\"equals\" methods should be symmetric and work for subclasses")); @@ -704,7 +706,8 @@ class ChangelogActionIT { RuleChangeDto ruleChange = insertRuleChange(TESTED, CLEAR, rule3.getUuid(), Set.of(new RuleImpactChangeDto(MAINTAINABILITY, SECURITY, HIGH, MEDIUM), new RuleImpactChangeDto(null, RELIABILITY, null, LOW))); insertChange(profile, ActiveRuleChange.Type.ACTIVATED, user3, - ImmutableMap.of("severity", "MAJOR", "param_format", "^[A-Z][a-zA-Z0-9]*", "ruleUuid", rule3.getUuid()), ruleChange); + ImmutableMap.of("severity", "MAJOR", "prioritizedRule", "false", "param_format", "^[A-Z][a-zA-Z0-9]*", "ruleUuid", rule3.getUuid()) + , ruleChange); ws.newRequest() .setMethod("GET") diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java index 62ccecaa326..327db25da5a 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java @@ -87,7 +87,9 @@ public class ChangelogAction implements QProfileWsAction { "'newCleanCodeAttributeCategory' and 'impactChanges' to 'params' section of response"), new Change("10.3", "Added field 'sonarQubeVersion' to 'params' section of response"), new Change("10.8", format("Added parameter '%s'", PARAM_FILTER_MODE)), - new Change("10.8", format("Possible values '%s' and '%s' for response field 'severity' of 'impacts' have been added", INFO.name(), BLOCKER.name()))) + new Change("10.8", format("Possible values '%s' and '%s' for response field 'severity' of 'impacts' have been added", INFO.name() + , BLOCKER.name())), + new Change("2025.1", "Added field 'prioritizedRule' to 'params' section of response")) .setHandler(this) .setResponseExample(getClass().getResource("changelog-example.json")); @@ -227,6 +229,7 @@ public class ChangelogAction implements QProfileWsAction { private static void writeChanges(JsonWriter json, QProfileChangeDto change) { json.name("params").beginObject() .prop("severity", change.getDataAsMap().get("severity")); + json.prop("prioritizedRule", change.getDataAsMap().get("prioritizedRule")); change.getDataAsMap().entrySet().stream() .filter(entry -> entry.getKey().startsWith("param_")) .forEach(param -> json.prop(param.getKey().replace("param_", ""), param.getValue())); diff --git a/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/qualityprofile/ws/changelog-example.json b/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/qualityprofile/ws/changelog-example.json index 20e981b462b..0de3db1359b 100644 --- a/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/qualityprofile/ws/changelog-example.json +++ b/server/sonar-webserver-webapi/src/main/resources/org/sonar/server/qualityprofile/ws/changelog-example.json @@ -25,7 +25,8 @@ } ], "params" : { - "severity" : "CRITICAL" + "severity" : "CRITICAL", + "prioritizedRule" : "true" } }, { @@ -62,6 +63,7 @@ "date" : "2014-09-12T15:20:46+0200", "params" : { "severity" : "MAJOR", + "prioritizedRule" : "false", "format" : "^[A-Z][a-zA-Z0-9]*", "oldCleanCodeAttribute": "TESTED", "newCleanCodeAttribute": "CLEAR", |