aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZipeng WU <zipeng.wu@sonarsource.com>2023-10-04 12:40:12 +0200
committersonartech <sonartech@sonarsource.com>2023-10-12 20:02:51 +0000
commit0d4bba4a5af9f4944446ed7bb847671e068a5201 (patch)
treef0531cd3551213601d3e4f98bcfd0328c0ccd283
parent664aa30312b0e559785536630f18433228c31467 (diff)
downloadsonarqube-0d4bba4a5af9f4944446ed7bb847671e068a5201.tar.gz
sonarqube-0d4bba4a5af9f4944446ed7bb847671e068a5201.zip
SONAR-20604 Remove old rating conditions and use new_violations in Sonar Way definition
-rw-r--r--server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/RegisterQualityGatesIT.java51
-rw-r--r--server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java12
2 files changed, 26 insertions, 37 deletions
diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/RegisterQualityGatesIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/RegisterQualityGatesIT.java
index e8240ee9554..1dad0d2b0a1 100644
--- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/RegisterQualityGatesIT.java
+++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/qualitygate/RegisterQualityGatesIT.java
@@ -48,7 +48,7 @@ import static org.sonar.api.measures.CoreMetrics.NEW_MAINTAINABILITY_RATING_KEY;
import static org.sonar.api.measures.CoreMetrics.NEW_RELIABILITY_RATING_KEY;
import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_HOTSPOTS_REVIEWED_KEY;
import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_RATING_KEY;
-import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_REMEDIATION_EFFORT_KEY;
+import static org.sonar.api.measures.CoreMetrics.NEW_VIOLATIONS_KEY;
import static org.sonar.api.measures.Metric.ValueType.INT;
import static org.sonar.api.measures.Metric.ValueType.PERCENT;
import static org.sonar.db.metric.MetricTesting.newMetricDto;
@@ -105,9 +105,11 @@ public class RegisterQualityGatesIT {
insertMetrics();
QualityGateDto builtInQualityGate = db.qualityGates().insertBuiltInQualityGate();
createBuiltInConditions(builtInQualityGate);
- // Add another condition
- qualityGateConditionsUpdater.createCondition(dbSession, builtInQualityGate,
- NEW_SECURITY_REMEDIATION_EFFORT_KEY, OPERATOR_GREATER_THAN, "5");
+
+ // Add old conditions
+ List.of(NEW_RELIABILITY_RATING_KEY, NEW_MAINTAINABILITY_RATING_KEY, NEW_SECURITY_RATING_KEY)
+ .forEach(metricKey -> qualityGateConditionsUpdater.createCondition(dbSession, builtInQualityGate,
+ metricKey, OPERATOR_GREATER_THAN, "1"));
dbSession.commit();
underTest.start();
@@ -236,20 +238,25 @@ public class RegisterQualityGatesIT {
}
private void insertMetrics() {
- dbClient.metricDao().insert(dbSession, newMetricDto().setKey(NEW_RELIABILITY_RATING_KEY).setValueType(INT.name()).setHidden(false).setDirection(0));
- dbClient.metricDao().insert(dbSession, newMetricDto().setKey(NEW_SECURITY_RATING_KEY).setValueType(INT.name()).setHidden(false).setDirection(0));
- dbClient.metricDao().insert(dbSession, newMetricDto().setKey(NEW_SECURITY_REMEDIATION_EFFORT_KEY).setValueType(INT.name()).setHidden(false).setDirection(0));
- dbClient.metricDao().insert(dbSession, newMetricDto().setKey(NEW_MAINTAINABILITY_RATING_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
- dbClient.metricDao().insert(dbSession, newMetricDto().setKey(NEW_COVERAGE_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
- dbClient.metricDao().insert(dbSession, newMetricDto().setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
- dbClient.metricDao().insert(dbSession, newMetricDto().setKey(NEW_SECURITY_HOTSPOTS_REVIEWED_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
+ dbClient.metricDao().insert(dbSession,
+ newMetricDto().setKey(NEW_RELIABILITY_RATING_KEY).setValueType(INT.name()).setHidden(false).setDirection(0));
+ dbClient.metricDao().insert(dbSession,
+ newMetricDto().setKey(NEW_SECURITY_RATING_KEY).setValueType(INT.name()).setHidden(false).setDirection(0));
+ dbClient.metricDao().insert(dbSession,
+ newMetricDto().setKey(NEW_MAINTAINABILITY_RATING_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
+ dbClient.metricDao().insert(dbSession,
+ newMetricDto().setKey(NEW_VIOLATIONS_KEY).setValueType(INT.name()).setHidden(false).setDirection(0));
+ dbClient.metricDao().insert(dbSession,
+ newMetricDto().setKey(NEW_COVERAGE_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
+ dbClient.metricDao().insert(dbSession,
+ newMetricDto().setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
+ dbClient.metricDao().insert(dbSession,
+ newMetricDto().setKey(NEW_SECURITY_HOTSPOTS_REVIEWED_KEY).setValueType(PERCENT.name()).setHidden(false).setDirection(0));
dbSession.commit();
}
private void verifyCorrectBuiltInQualityGate() {
- MetricDto newReliability = metricDao.selectByKey(dbSession, NEW_RELIABILITY_RATING_KEY);
- MetricDto newSecurity = metricDao.selectByKey(dbSession, NEW_SECURITY_RATING_KEY);
- MetricDto newMaintainability = metricDao.selectByKey(dbSession, NEW_MAINTAINABILITY_RATING_KEY);
+ MetricDto newViolations = metricDao.selectByKey(dbSession, NEW_VIOLATIONS_KEY);
MetricDto newCoverage = metricDao.selectByKey(dbSession, NEW_COVERAGE_KEY);
MetricDto newDuplication = metricDao.selectByKey(dbSession, NEW_DUPLICATED_LINES_DENSITY_KEY);
MetricDto newSecurityHotspots = metricDao.selectByKey(dbSession, NEW_SECURITY_HOTSPOTS_REVIEWED_KEY);
@@ -262,9 +269,7 @@ public class RegisterQualityGatesIT {
.extracting(QualityGateConditionDto::getMetricUuid, QualityGateConditionDto::getOperator,
QualityGateConditionDto::getErrorThreshold)
.containsExactlyInAnyOrder(
- tuple(newReliability.getUuid(), OPERATOR_GREATER_THAN, "1"),
- tuple(newSecurity.getUuid(), OPERATOR_GREATER_THAN, "1"),
- tuple(newMaintainability.getUuid(), OPERATOR_GREATER_THAN, "1"),
+ tuple(newViolations.getUuid(), OPERATOR_GREATER_THAN, "0"),
tuple(newCoverage.getUuid(), OPERATOR_LESS_THAN, "80"),
tuple(newDuplication.getUuid(), OPERATOR_GREATER_THAN, "3"),
tuple(newSecurityHotspots.getUuid(), OPERATOR_LESS_THAN, "100"));
@@ -274,11 +279,7 @@ public class RegisterQualityGatesIT {
List<QualityGateConditionDto> conditions = new ArrayList<>();
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_SECURITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
- conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_RELIABILITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
- conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
- NEW_MAINTAINABILITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
+ NEW_VIOLATIONS_KEY, OPERATOR_GREATER_THAN, "0"));
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
NEW_COVERAGE_KEY, OPERATOR_LESS_THAN, "80"));
conditions.add(qualityGateConditionsUpdater.createCondition(dbSession, qg,
@@ -293,11 +294,7 @@ public class RegisterQualityGatesIT {
List<QualityGateConditionDto> conditions = new ArrayList<>();
conditions.add(createConditionWithoutCheckingDuplicates(qg,
- NEW_SECURITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
- conditions.add(createConditionWithoutCheckingDuplicates(qg,
- NEW_RELIABILITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
- conditions.add(createConditionWithoutCheckingDuplicates(qg,
- NEW_MAINTAINABILITY_RATING_KEY, OPERATOR_GREATER_THAN, "1"));
+ NEW_VIOLATIONS_KEY, OPERATOR_GREATER_THAN, "0"));
conditions.add(createConditionWithoutCheckingDuplicates(qg,
NEW_COVERAGE_KEY, OPERATOR_LESS_THAN, "80"));
conditions.add(createConditionWithoutCheckingDuplicates(qg,
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java
index f1426313523..455ab3be636 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java
@@ -41,31 +41,23 @@ import org.sonar.db.qualitygate.QualityGateConditionDao;
import org.sonar.db.qualitygate.QualityGateConditionDto;
import org.sonar.db.qualitygate.QualityGateDao;
import org.sonar.db.qualitygate.QualityGateDto;
-import org.sonar.server.measure.Rating;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toMap;
import static org.sonar.api.measures.CoreMetrics.NEW_COVERAGE_KEY;
import static org.sonar.api.measures.CoreMetrics.NEW_DUPLICATED_LINES_DENSITY_KEY;
-import static org.sonar.api.measures.CoreMetrics.NEW_MAINTAINABILITY_RATING_KEY;
-import static org.sonar.api.measures.CoreMetrics.NEW_RELIABILITY_RATING_KEY;
import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_HOTSPOTS_REVIEWED_KEY;
-import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_RATING_KEY;
+import static org.sonar.api.measures.CoreMetrics.NEW_VIOLATIONS_KEY;
import static org.sonar.db.qualitygate.QualityGateConditionDto.OPERATOR_GREATER_THAN;
import static org.sonar.db.qualitygate.QualityGateConditionDto.OPERATOR_LESS_THAN;
public class RegisterQualityGates implements Startable {
private static final Logger LOGGER = LoggerFactory.getLogger(RegisterQualityGates.class);
-
private static final String BUILTIN_QUALITY_GATE_NAME = "Sonar way";
- private static final String A_RATING = Integer.toString(Rating.A.getIndex());
-
private static final List<QualityGateCondition> QUALITY_GATE_CONDITIONS = asList(
- new QualityGateCondition().setMetricKey(NEW_SECURITY_RATING_KEY).setOperator(OPERATOR_GREATER_THAN).setErrorThreshold(A_RATING),
- new QualityGateCondition().setMetricKey(NEW_RELIABILITY_RATING_KEY).setOperator(OPERATOR_GREATER_THAN).setErrorThreshold(A_RATING),
- new QualityGateCondition().setMetricKey(NEW_MAINTAINABILITY_RATING_KEY).setOperator(OPERATOR_GREATER_THAN).setErrorThreshold(A_RATING),
+ new QualityGateCondition().setMetricKey(NEW_VIOLATIONS_KEY).setOperator(OPERATOR_GREATER_THAN).setErrorThreshold("0"),
new QualityGateCondition().setMetricKey(NEW_COVERAGE_KEY).setOperator(OPERATOR_LESS_THAN).setErrorThreshold("80"),
new QualityGateCondition().setMetricKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setOperator(OPERATOR_GREATER_THAN).setErrorThreshold("3"),
new QualityGateCondition().setMetricKey(NEW_SECURITY_HOTSPOTS_REVIEWED_KEY).setOperator(OPERATOR_LESS_THAN).setErrorThreshold("100"));