]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7353 Synchronize rules type on each startup
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 1 Mar 2016 13:43:37 +0000 (14:43 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 2 Mar 2016 13:19:36 +0000 (14:19 +0100)
server/sonar-server/src/main/java/org/sonar/server/rule/RegisterRules.java
server/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesTest.java

index 291e6fe2916997d64f1d4cd7039ee441d8a1042c..4895ba91db124b0073d82e43718aacd67299560e 100644 (file)
@@ -45,6 +45,7 @@ import org.sonar.api.utils.System2;
 import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
 import org.sonar.api.utils.log.Profiler;
+import org.sonar.core.rule.RuleType;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.qualityprofile.ActiveRuleDto;
@@ -171,6 +172,7 @@ public class RegisterRules implements Startable {
       .setStatus(ruleDef.status())
       .setEffortToFixDescription(ruleDef.effortToFixDescription())
       .setSystemTags(ruleDef.tags())
+      .setType(RuleType.valueOf(ruleDef.type().name()))
       .setCreatedAt(system2.now())
       .setUpdatedAt(system2.now());
     if (ruleDef.htmlDescription() != null) {
@@ -220,6 +222,11 @@ public class RegisterRules implements Startable {
       dto.setLanguage(def.repository().language());
       changed = true;
     }
+    RuleType type = RuleType.valueOf(def.type().name());
+    if (!ObjectUtils.equals(dto.getType(), type.getDbConstant())) {
+      dto.setType(type);
+      changed = true;
+    }
     return changed;
   }
 
index b1b9b183356c1d4fd7b1f885ab5742ab9a634681..fc32d9d839f65348e91ad775da0203bd05846b14 100644 (file)
@@ -34,6 +34,7 @@ import org.sonar.api.server.debt.DebtRemediationFunction;
 import org.sonar.api.server.rule.RulesDefinition;
 import org.sonar.api.utils.DateUtils;
 import org.sonar.api.utils.System2;
+import org.sonar.core.rule.RuleType;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbTester;
 import org.sonar.db.rule.RuleDto;
@@ -107,6 +108,7 @@ public class RegisterRulesTest {
     assertThat(rule1.getDefaultRemediationFunction()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET.name());
     assertThat(rule1.getDefaultRemediationCoefficient()).isEqualTo("5d");
     assertThat(rule1.getDefaultRemediationOffset()).isEqualTo("10h");
+    assertThat(rule1.getType()).isEqualTo(RuleType.CODE_SMELL.getDbConstant());
 
     List<RuleParamDto> params = dbClient.ruleDao().selectRuleParamsByRuleKey(dbTester.getSession(), RULE_KEY1);
     assertThat(params).hasSize(2);
@@ -146,6 +148,7 @@ public class RegisterRulesTest {
     assertThat(rule1.getNoteData()).isEqualTo("user *note*");
     assertThat(rule1.getNoteUserLogin()).isEqualTo("marius");
     assertThat(rule1.getStatus()).isEqualTo(RuleStatus.READY);
+    assertThat(rule1.getType()).isEqualTo(RuleType.BUG.getDbConstant());
     assertThat(rule1.getCreatedAt()).isEqualTo(DATE1.getTime());
     assertThat(rule1.getUpdatedAt()).isEqualTo(DATE2.getTime());
     // TODO check remediation function
@@ -357,6 +360,7 @@ public class RegisterRulesTest {
         .setSeverity(BLOCKER)
         .setInternalKey("config1")
         .setTags("tag1", "tag2", "tag3")
+        .setType(Type.CODE_SMELL)
         .setStatus(RuleStatus.BETA)
         .setEffortToFixDescription("squid.S115.effortToFix");
       rule1.setDebtRemediationFunction(rule1.debtRemediationFunctions().linearWithOffset("5d", "10h"));
@@ -387,6 +391,7 @@ public class RegisterRulesTest {
         .setInternalKey("config1 v2")
         // tag2 and tag3 removed, tag4 added
         .setTags("tag1", "tag4")
+        .setType(Type.BUG)
         .setStatus(RuleStatus.READY)
         .setEffortToFixDescription("squid.S115.effortToFix.v2");
       rule1.setDebtRemediationFunction(rule1.debtRemediationFunctions().linearWithOffset("6d", "2h"));