aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregator.java15
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregatorTest.java14
2 files changed, 22 insertions, 7 deletions
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregator.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregator.java
index bdcf742fc2d..b342e51ddbb 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregator.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregator.java
@@ -24,13 +24,13 @@ import java.util.HashMap;
import java.util.Map;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.ce.task.projectanalysis.component.Component;
-import org.sonar.core.issue.DefaultIssue;
import org.sonar.ce.task.projectanalysis.measure.Measure;
import org.sonar.ce.task.projectanalysis.measure.MeasureRepository;
import org.sonar.ce.task.projectanalysis.metric.Metric;
import org.sonar.ce.task.projectanalysis.metric.MetricRepository;
import org.sonar.ce.task.projectanalysis.period.Period;
import org.sonar.ce.task.projectanalysis.period.PeriodHolder;
+import org.sonar.core.issue.DefaultIssue;
import static org.sonar.api.measures.CoreMetrics.NEW_RELIABILITY_REMEDIATION_EFFORT_KEY;
import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_REMEDIATION_EFFORT_KEY;
@@ -85,16 +85,17 @@ public class NewEffortAggregator extends IssueVisitor {
@Override
public void afterComponent(Component component) {
- computeMeasure(component, newMaintainabilityEffortMetric, counter.maintainabilitySum);
- computeMeasure(component, newReliabilityEffortMetric, counter.reliabilitySum);
- computeMeasure(component, newSecurityEffortMetric, counter.securitySum);
+ if (periodHolder.hasPeriod()) {
+ computeMeasure(component, newMaintainabilityEffortMetric, counter.maintainabilitySum);
+ computeMeasure(component, newReliabilityEffortMetric, counter.reliabilitySum);
+ computeMeasure(component, newSecurityEffortMetric, counter.securitySum);
+ }
counter = null;
}
private void computeMeasure(Component component, Metric metric, EffortSum effortSum) {
- if (!effortSum.isEmpty) {
- measureRepository.add(component, metric, Measure.newMeasureBuilder().setVariation(effortSum.newEffort).createNoValue());
- }
+ double variation = effortSum.isEmpty ? 0.0 : effortSum.newEffort;
+ measureRepository.add(component, metric, Measure.newMeasureBuilder().setVariation(variation).createNoValue());
}
private static class NewEffortCounter {
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregatorTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregatorTest.java
index c2c43d66f21..272fc1bd249 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregatorTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregatorTest.java
@@ -124,6 +124,7 @@ public class NewEffortAggregatorTest {
DefaultIssue unresolved1 = newBugIssue(10L);
DefaultIssue old1 = oldBugIssue(100L);
DefaultIssue unresolved2 = newBugIssue(30L);
+
DefaultIssue old2 = oldBugIssue(300L);
DefaultIssue unresolvedWithoutDebt = newBugIssueWithoutEffort();
DefaultIssue resolved = newBugIssue(50L).setResolution(RESOLUTION_FIXED);
@@ -264,9 +265,22 @@ public class NewEffortAggregatorTest {
assertThat(measureRepository.getRawMeasures(FILE)).isEmpty();
}
+ @Test
+ public void should_have_empty_measures_if_no_issues() {
+ periodsHolder.setPeriod(PERIOD);
+
+ underTest.beforeComponent(FILE);
+ underTest.afterComponent(FILE);
+
+ assertVariation(FILE, NEW_TECHNICAL_DEBT_KEY, 0);
+ assertVariation(FILE, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 0);
+ assertVariation(FILE, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 0);
+ }
+
private void assertVariation(Component component, String metricKey, int variation) {
Measure newMeasure = measureRepository.getRawMeasure(component, metricRepository.getByKey(metricKey)).get();
assertThat(newMeasure.getVariation()).isEqualTo(variation);
+ assertThat(newMeasure.getValueType()).isEqualTo(Measure.ValueType.NO_VALUE);
}
private static DefaultIssue newCodeSmellIssue(long effort) {