aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/QProfileChangeMapper.xml3
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/ActiveRuleChange.java3
-rw-r--r--server/sonar-server-common/src/test/java/org/sonar/server/qualityprofile/ActiveRuleChangeTest.java4
-rw-r--r--server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/QProfileRulesImplIT.java2
-rw-r--r--server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualityprofile/ws/ChangelogActionIT.java7
-rw-r--r--server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/ws/ChangelogAction.java5
-rw-r--r--server/sonar-webserver-webapi/src/main/resources/org/sonar/server/qualityprofile/ws/changelog-example.json4
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",