aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api/src/main/java/org/sonar/api/batch
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-03-11 08:09:01 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-03-11 08:09:01 +0100
commitdce23fcf9ac907f6621ab0c11c397febff280ebc (patch)
treef819d4a7216d35389a3063b0f0a96cde49cb62db /sonar-plugin-api/src/main/java/org/sonar/api/batch
parent1ffa320fb3e44cdaf635678a04c473ca4f348514 (diff)
downloadsonarqube-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')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rule.java36
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/RuleParam.java1
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/Rules.java2
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRule.java32
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/DefaultRules.java2
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/rule/internal/NewRule.java29
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));