]> source.dussan.org Git - sonarqube.git/commitdiff
Fix quality flaws
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 17 Mar 2014 13:31:56 +0000 (14:31 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 17 Mar 2014 13:32:04 +0000 (14:32 +0100)
sonar-plugin-api/src/main/java/org/sonar/api/server/rule/DebtRemediationFunction.java
sonar-server/src/main/java/org/sonar/server/debt/DebtRulesXMLImporter.java

index c1853d28d30479dc3743f409cdaa5954cf48f2a8..74b95aea2f1e708cbec851158f4837ce23305eba 100644 (file)
@@ -52,6 +52,10 @@ public class DebtRemediationFunction {
     // TODO validate factor and offset format
     this.factor = StringUtils.deleteWhitespace(factor);
     this.offset = StringUtils.deleteWhitespace(offset);
+    validate();
+  }
+
+  private void validate(){
     switch (type) {
       case LINEAR:
         if (this.factor == null || this.offset != null) {
@@ -68,6 +72,8 @@ public class DebtRemediationFunction {
           throw new ValidationException(String.format("%s is invalid, Constant/issue remediation function should only define an offset", this));
         }
         break;
+      default:
+        throw new IllegalStateException(String.format("Remediation function of %s is unknown", this));
     }
   }
 
index 62942a1311a72efd1e3facdfb451530700727ab9..3beb4daa1e440df783e3c0ffe027698cfd5e540a 100644 (file)
@@ -171,7 +171,7 @@ public class DebtRulesXMLImporter implements ServerExtension {
   }
 
   @CheckForNull
-  private RuleDebt processRule(RuleKey ruleKey, Properties properties){
+  private RuleDebt processRule(RuleKey ruleKey, Properties properties) {
     try {
       return createRule(ruleKey, properties);
     } catch (DebtRemediationFunction.ValidationException e) {
@@ -189,17 +189,22 @@ public class DebtRulesXMLImporter implements ServerExtension {
       Property offsetProperty = properties.offset();
       String offset = offsetProperty != null ? offsetProperty.toDuration() : null;
 
-      String functionKey = function.getTextValue();
-      if ("linear_threshold".equals(functionKey) && factor != null) {
-        LOG.warn(String.format("Linear with threshold function is no longer used, remediation function of '%s' is replaced by linear.", ruleKey));
-        return new RuleDebt().setRuleKey(ruleKey).setFunction(DebtRemediationFunction.createLinear(factor));
-      } else if ("constant_resource".equals(functionKey)) {
-        LOG.warn(String.format("Constant/file function is no longer used, technical debt definitions on '%s' are ignored.", ruleKey));
-      } else if (DebtRemediationFunction.Type.CONSTANT_ISSUE.name().toLowerCase().equals(functionKey) && factor != null && offset == null) {
-        return new RuleDebt().setRuleKey(ruleKey).setFunction(DebtRemediationFunction.createConstantPerIssue(factor));
-      } else {
-        return new RuleDebt().setRuleKey(ruleKey).setFunction(DebtRemediationFunction.create(DebtRemediationFunction.Type.valueOf(functionKey.toUpperCase()), factor, offset));
-      }
+      return createRuleDebt(ruleKey, function.getTextValue(), factor, offset);
+    }
+    return null;
+  }
+
+  @CheckForNull
+  private RuleDebt createRuleDebt(RuleKey ruleKey, String function, @Nullable String factor, @Nullable String offset) {
+    if ("linear_threshold".equals(function) && factor != null) {
+      LOG.warn(String.format("Linear with threshold function is no longer used, remediation function of '%s' is replaced by linear.", ruleKey));
+      return new RuleDebt().setRuleKey(ruleKey).setFunction(DebtRemediationFunction.createLinear(factor));
+    } else if ("constant_resource".equals(function)) {
+      LOG.warn(String.format("Constant/file function is no longer used, technical debt definitions on '%s' are ignored.", ruleKey));
+    } else if (DebtRemediationFunction.Type.CONSTANT_ISSUE.name().equalsIgnoreCase(function) && factor != null && offset == null) {
+      return new RuleDebt().setRuleKey(ruleKey).setFunction(DebtRemediationFunction.createConstantPerIssue(factor));
+    } else {
+      return new RuleDebt().setRuleKey(ruleKey).setFunction(DebtRemediationFunction.create(DebtRemediationFunction.Type.valueOf(function.toUpperCase()), factor, offset));
     }
     return null;
   }