diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-03-11 08:09:01 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-03-11 08:09:01 +0100 |
commit | dce23fcf9ac907f6621ab0c11c397febff280ebc (patch) | |
tree | f819d4a7216d35389a3063b0f0a96cde49cb62db /sonar-plugin-api/src/main/java/org/sonar/api/batch | |
parent | 1ffa320fb3e44cdaf635678a04c473ca4f348514 (diff) | |
download | sonarqube-dce23fcf9ac907f6621ab0c11c397febff280ebc.tar.gz sonarqube-dce23fcf9ac907f6621ab0c11c397febff280ebc.zip |
SONAR-5056 Read debt from rule during analysis
Diffstat (limited to 'sonar-plugin-api/src/main/java/org/sonar/api/batch')
6 files changed, 95 insertions, 7 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rule.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rule.java index 1db2c7b50ed..10f49666326 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rule.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rule.java @@ -20,14 +20,16 @@ package org.sonar.api.batch.rule; import com.google.common.annotations.Beta; +import org.sonar.api.rule.RemediationFunction; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.RuleStatus; +import org.sonar.api.utils.Duration; import javax.annotation.CheckForNull; + import java.util.Collection; /** - * Not used * @since 4.2 */ @Beta @@ -52,4 +54,36 @@ public interface Rule { RuleStatus status(); + /** + * Characteristic key. + * + * @since 4.3 + */ + @CheckForNull + String characteristic(); + + /** + * Remediation function : one of LINEAR, LINEAR_OFFSET or CONSTANT_ISSUE. + * + * @since 4.3 + */ + @CheckForNull + RemediationFunction function(); + + /** + * Remediation factor duration (used for LINEAR function). + * + * @since 4.3 + */ + @CheckForNull + Duration factor(); + + /** + * Remediation offset duration (used for LINEAR_OFFSET or CONSTANT_ISSUE function). + * + * @since 4.3 + */ + @CheckForNull + Duration offset(); + } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/RuleParam.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/RuleParam.java index b322ebf8571..80fd72fef55 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/RuleParam.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/RuleParam.java @@ -22,7 +22,6 @@ package org.sonar.api.batch.rule; import com.google.common.annotations.Beta; /** - * Not used * @since 4.2 */ @Beta diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rules.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rules.java index ae3b41f8333..3b417972000 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rules.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rules.java @@ -23,10 +23,10 @@ import com.google.common.annotations.Beta; import org.sonar.api.rule.RuleKey; import javax.annotation.CheckForNull; + import java.util.Collection; /** - * Not used yet * @since 4.2 */ @Beta diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRule.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRule.java index 784425b5d2a..8e4f6e86287 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRule.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRule.java @@ -22,11 +22,14 @@ package org.sonar.api.batch.rule.internal; import com.google.common.collect.ImmutableMap; import org.sonar.api.batch.rule.Rule; import org.sonar.api.batch.rule.RuleParam; +import org.sonar.api.rule.RemediationFunction; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.RuleStatus; +import org.sonar.api.utils.Duration; import javax.annotation.CheckForNull; import javax.annotation.concurrent.Immutable; + import java.util.Collection; import java.util.Map; @@ -35,8 +38,11 @@ public class DefaultRule implements Rule { private final RuleKey key; private final Integer id; - private final String name, severity, description, metadata; + private final String name, severity, description, metadata, characteristic; private final RuleStatus status; + RemediationFunction function; + Duration factor, offset; + private final Map<String, RuleParam> params; DefaultRule(NewRule newRule) { @@ -47,6 +53,10 @@ public class DefaultRule implements Rule { this.description = newRule.description; this.metadata = newRule.metadata; this.status = newRule.status; + this.characteristic = newRule.characteristic; + this.function = newRule.function; + this.factor = newRule.factor; + this.offset = newRule.offset; ImmutableMap.Builder<String, RuleParam> builder = ImmutableMap.builder(); for (NewRuleParam newRuleParam : newRule.params.values()) { @@ -91,6 +101,26 @@ public class DefaultRule implements Rule { } @Override + public String characteristic() { + return characteristic; + } + + @Override + public RemediationFunction function() { + return function; + } + + @Override + public Duration factor() { + return factor; + } + + @Override + public Duration offset() { + return offset; + } + + @Override public RuleParam param(String paramKey) { return params.get(paramKey); } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRules.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRules.java index b55e0104ea9..9a20e04fb7e 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRules.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRules.java @@ -27,6 +27,7 @@ import org.sonar.api.batch.rule.Rules; import org.sonar.api.rule.RuleKey; import javax.annotation.concurrent.Immutable; + import java.util.Collection; import java.util.List; @@ -45,7 +46,6 @@ class DefaultRules implements Rules { rulesByRepository = builder.build(); } - @Override public Rule find(RuleKey ruleKey) { List<Rule> rules = rulesByRepository.get(ruleKey.repository()); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/NewRule.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/NewRule.java index 4e22c0da58d..8bb25749a7f 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/NewRule.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/NewRule.java @@ -21,11 +21,14 @@ package org.sonar.api.batch.rule.internal; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; +import org.sonar.api.rule.RemediationFunction; import org.sonar.api.rule.RuleKey; -import org.sonar.api.rule.Severity; import org.sonar.api.rule.RuleStatus; +import org.sonar.api.rule.Severity; +import org.sonar.api.utils.Duration; import javax.annotation.Nullable; + import java.util.HashMap; import java.util.Map; @@ -35,7 +38,9 @@ public class NewRule { final RuleKey key; Integer id; - String name, description, severity = DEFAULT_SEVERITY, metadata; + String name, description, severity = DEFAULT_SEVERITY, metadata, characteristic; + RemediationFunction function; + Duration factor, offset; RuleStatus status = RuleStatus.defaultStatus(); Map<String, NewRuleParam> params = new HashMap<String, NewRuleParam>(); @@ -73,6 +78,26 @@ public class NewRule { return this; } + public NewRule setCharacteristic(@Nullable String c) { + this.characteristic = c; + return this; + } + + public NewRule setFunction(@Nullable RemediationFunction f) { + this.function = f; + return this; + } + + public NewRule setFactor(@Nullable Duration f) { + this.factor = f; + return this; + } + + public NewRule setOffset(@Nullable Duration o) { + this.offset = o; + return this; + } + public NewRuleParam addParam(String paramKey) { if (params.containsKey(paramKey)) { throw new IllegalStateException(String.format("Parameter '%s' already exists on rule '%s'", paramKey, key)); |