aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-ce-task-projectanalysis
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2022-10-31 14:40:32 -0500
committersonartech <sonartech@sonarsource.com>2022-11-05 20:03:18 +0000
commit9b62ebf3361b96a2d693660236f1bce89d71edfa (patch)
tree8837dc35b5e6dfafa7df62f62bf2c1e55688d87a /server/sonar-ce-task-projectanalysis
parent717613ac072b0cb9b49fff79354b99f26060be72 (diff)
downloadsonarqube-9b62ebf3361b96a2d693660236f1bce89d71edfa.tar.gz
sonarqube-9b62ebf3361b96a2d693660236f1bce89d71edfa.zip
SONAR-16455 Merge measure's 'variation' and 'value'
Diffstat (limited to 'server/sonar-ce-task-projectanalysis')
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/FileStatusesImpl.java10
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/VariationSumFormula.java83
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtils.java16
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageVariationFormula.java48
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/ElementsAndCoveredElementsVariationCounter.java49
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationCounter.java48
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationFormula.java46
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationCounter.java41
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationFormula.java46
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/IssueCounter.java11
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregator.java12
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimization.java9
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasure.java66
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/Measure.java115
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasure.java8
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDto.java6
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluator.java29
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitor.java15
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java2
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitor.java8
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStep.java14
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStep.java12
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStep.java2
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCase.java2
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStep.java15
-rw-r--r--server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStep.java14
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ReportFormulaExecutorComponentVisitorTest.java94
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ViewsFormulaExecutorComponentVisitorTest.java39
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/IntValueTest.java40
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/RatingValueTest.java26
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtilsTest.java20
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueCounterTest.java19
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/NewEffortAggregatorTest.java29
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimizationTest.java35
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasureTest.java41
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasureTest.java23
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureTest.java7
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDtoTest.java16
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluatorTest.java45
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitorTest.java20
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitorTest.java3
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitorTest.java12
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStepTest.java98
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStepTest.java97
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStepTest.java5
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistMeasuresStepTest.java5
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/QualityGateMeasuresStepTest.java4
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCaseTest.java10
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStepTest.java12
-rw-r--r--server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStepTest.java38
-rw-r--r--server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureAssert.java59
-rw-r--r--server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureRepoEntry.java15
52 files changed, 372 insertions, 1167 deletions
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/FileStatusesImpl.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/FileStatusesImpl.java
index 045b7ffa14e..21471cbf0d1 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/FileStatusesImpl.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/FileStatusesImpl.java
@@ -22,6 +22,8 @@ package org.sonar.ce.task.projectanalysis.component;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
+import org.sonar.api.utils.log.Logger;
+import org.sonar.api.utils.log.Loggers;
import org.sonar.ce.task.projectanalysis.analysis.AnalysisMetadataHolder;
import org.sonar.ce.task.projectanalysis.source.SourceHashRepository;
import org.sonar.db.source.FileHashesDto;
@@ -30,11 +32,14 @@ import static com.google.common.base.Preconditions.checkState;
import static org.sonar.ce.task.projectanalysis.component.ComponentVisitor.Order.PRE_ORDER;
public class FileStatusesImpl implements FileStatuses {
+ private static final Logger LOG = Loggers.get(FileStatusesImpl.class);
+
private final PreviousSourceHashRepository previousSourceHashRepository;
private final SourceHashRepository sourceHashRepository;
private final AnalysisMetadataHolder analysisMetadataHolder;
private final TreeRootHolder treeRootHolder;
private Set<String> fileUuidsMarkedAsUnchanged;
+ private int notMarkedAsUnchanged = 0;
public FileStatusesImpl(AnalysisMetadataHolder analysisMetadataHolder, TreeRootHolder treeRootHolder, PreviousSourceHashRepository previousSourceHashRepository,
SourceHashRepository sourceHashRepository) {
@@ -49,6 +54,8 @@ public class FileStatusesImpl implements FileStatuses {
if (!analysisMetadataHolder.isPullRequest() && !analysisMetadataHolder.isFirstAnalysis()) {
new DepthTraversalTypeAwareCrawler(new Visitor()).visit(treeRootHolder.getRoot());
}
+ LOG.warn("FILES MARKED AS UNCHANGED: " + fileUuidsMarkedAsUnchanged.size());
+ LOG.warn("FILES NOT MARKED AS UNCHANGED: " + notMarkedAsUnchanged);
}
private class Visitor extends TypeAwareVisitorAdapter {
@@ -68,8 +75,11 @@ public class FileStatusesImpl implements FileStatuses {
if (canTrustUnchangedFlags) {
if (file.getFileAttributes().isMarkedAsUnchanged()) {
fileUuidsMarkedAsUnchanged.add(file.getUuid());
+ } else {
+ notMarkedAsUnchanged++;
}
} else {
+ LOG.error("FILE HAS DIFFERENT HASH: " + file.getName());
fileUuidsMarkedAsUnchanged.clear();
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/VariationSumFormula.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/VariationSumFormula.java
deleted file mode 100644
index 9543fa60be4..00000000000
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/VariationSumFormula.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.formula;
-
-import java.util.Optional;
-import org.sonar.ce.task.projectanalysis.component.CrawlerDepthLimit;
-import org.sonar.ce.task.projectanalysis.formula.counter.DoubleValue;
-import org.sonar.ce.task.projectanalysis.measure.Measure;
-
-import static java.util.Objects.requireNonNull;
-import static org.sonar.ce.task.projectanalysis.measure.Measure.newMeasureBuilder;
-
-/**
- * A Formula which aggregates variations of a specific metric by simply making the sums of its variations. It supports
- * make the sum of only specific periods.
- */
-public class VariationSumFormula implements Formula<VariationSumFormula.VariationSumCounter> {
- private final String metricKey;
-
- public VariationSumFormula(String metricKey) {
- this.metricKey = requireNonNull(metricKey, "Metric key cannot be null");
- }
-
- @Override
- public VariationSumCounter createNewCounter() {
- return new VariationSumCounter(metricKey);
- }
-
- @Override
- public Optional<Measure> createMeasure(VariationSumCounter counter, CreateMeasureContext context) {
- if (!CrawlerDepthLimit.LEAVES.isDeeperThan(context.getComponent().getType()) || !counter.doubleValue.isSet()) {
- return Optional.empty();
- }
- return Optional.of(newMeasureBuilder().setVariation(counter.doubleValue.getValue()).createNoValue());
- }
-
- @Override
- public String[] getOutputMetricKeys() {
- return new String[] {metricKey};
- }
-
- public static final class VariationSumCounter implements Counter<VariationSumCounter> {
- private final DoubleValue doubleValue = new DoubleValue();
- private final String metricKey;
-
- private VariationSumCounter(String metricKey) {
- this.metricKey = metricKey;
- }
-
- @Override
- public void aggregate(VariationSumCounter counter) {
- doubleValue.increment(counter.doubleValue);
- }
-
- @Override
- public void initialize(CounterInitializationContext context) {
- Optional<Measure> measure = context.getMeasure(metricKey);
- if (!measure.isPresent() || !measure.get().hasVariation()) {
- return;
- }
- double variation = measure.get().getVariation();
- doubleValue.increment(variation);
- }
-
- }
-}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtils.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtils.java
index ea7f8d51b58..876ce18cc4c 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtils.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtils.java
@@ -26,7 +26,8 @@ import org.sonar.ce.task.projectanalysis.measure.Measure;
import static org.sonar.ce.task.projectanalysis.measure.Measure.newMeasureBuilder;
public final class CoverageUtils {
- private static final Measure DEFAULT_MEASURE = newMeasureBuilder().create(0L);
+ private static final Measure DEFAULT_MEASURE_LONG = newMeasureBuilder().create(0L);
+ private static final Measure DEFAULT_MEASURE_INT = newMeasureBuilder().create(0);
private CoverageUtils() {
// prevents instantiation
@@ -37,7 +38,7 @@ public final class CoverageUtils {
}
static long getLongMeasureValue(CounterInitializationContext counterContext, String metricKey) {
- Measure measure = counterContext.getMeasure(metricKey).orElse(DEFAULT_MEASURE);
+ Measure measure = counterContext.getMeasure(metricKey).orElse(DEFAULT_MEASURE_LONG);
if (measure.getValueType() == Measure.ValueType.NO_VALUE) {
return 0L;
}
@@ -47,12 +48,11 @@ public final class CoverageUtils {
return measure.getLongValue();
}
- static double getMeasureVariations(CounterInitializationContext counterContext, String metricKey) {
- Optional<Measure> measure = counterContext.getMeasure(metricKey);
- if (!measure.isPresent() || !measure.get().hasVariation()) {
- return 0D;
+ static int getIntMeasureValue(CounterInitializationContext counterContext, String metricKey) {
+ Measure measure = counterContext.getMeasure(metricKey).orElse(DEFAULT_MEASURE_INT);
+ if (measure.getValueType() == Measure.ValueType.NO_VALUE) {
+ return 0;
}
- return measure.get().getVariation();
+ return measure.getIntValue();
}
-
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageVariationFormula.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageVariationFormula.java
deleted file mode 100644
index f9e47497627..00000000000
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageVariationFormula.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.formula.coverage;
-
-import java.util.Optional;
-import org.sonar.ce.task.projectanalysis.formula.CreateMeasureContext;
-import org.sonar.ce.task.projectanalysis.formula.Formula;
-import org.sonar.ce.task.projectanalysis.formula.counter.LongValue;
-import org.sonar.ce.task.projectanalysis.measure.Measure;
-
-import static org.sonar.ce.task.projectanalysis.formula.coverage.CoverageUtils.calculateCoverage;
-import static org.sonar.ce.task.projectanalysis.measure.Measure.newMeasureBuilder;
-
-/**
- * An abstract Formula which implements the aggregation of a Counter of type ElementsAndCoveredElementsVariationCounter
- * with another counter.
- */
-public abstract class CoverageVariationFormula<T extends ElementsAndCoveredElementsVariationCounter> implements Formula<T> {
-
- @Override
- public Optional<Measure> createMeasure(T counter, CreateMeasureContext context) {
- LongValue elements = counter.elements;
- if (elements.isSet() && elements.getValue() > 0D) {
- LongValue coveredElements = counter.coveredElements;
- double variation = calculateCoverage(coveredElements.getValue(), elements.getValue());
- return Optional.of(newMeasureBuilder().setVariation(variation).createNoValue());
- }
- return Optional.empty();
- }
-
-}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/ElementsAndCoveredElementsVariationCounter.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/ElementsAndCoveredElementsVariationCounter.java
deleted file mode 100644
index 411d9e260b8..00000000000
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/ElementsAndCoveredElementsVariationCounter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.formula.coverage;
-
-import org.sonar.ce.task.projectanalysis.component.Component;
-import org.sonar.ce.task.projectanalysis.formula.Counter;
-import org.sonar.ce.task.projectanalysis.formula.CounterInitializationContext;
-import org.sonar.ce.task.projectanalysis.formula.counter.LongValue;
-
-/**
- * A counter used to create measure variations which are based on a count of elements and coveredElements.
- */
-public abstract class ElementsAndCoveredElementsVariationCounter implements Counter<ElementsAndCoveredElementsVariationCounter> {
- protected final LongValue elements = new LongValue();
- protected final LongValue coveredElements = new LongValue();
-
- @Override
- public void aggregate(ElementsAndCoveredElementsVariationCounter counter) {
- elements.increment(counter.elements);
- coveredElements.increment(counter.coveredElements);
- }
-
- @Override
- public void initialize(CounterInitializationContext context) {
- if (context.getLeaf().getType() == Component.Type.FILE && context.getLeaf().getFileAttributes().isUnitTest()) {
- return;
- }
- initializeForSupportedLeaf(context);
- }
-
- protected abstract void initializeForSupportedLeaf(CounterInitializationContext counterContext);
-}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationCounter.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationCounter.java
deleted file mode 100644
index 28cf0d1c905..00000000000
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationCounter.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.formula.coverage;
-
-import java.util.Optional;
-import org.sonar.ce.task.projectanalysis.formula.CounterInitializationContext;
-import org.sonar.ce.task.projectanalysis.measure.Measure;
-
-public final class LinesAndConditionsWithUncoveredVariationCounter extends ElementsAndCoveredElementsVariationCounter {
- private final LinesAndConditionsWithUncoveredMetricKeys metricKeys;
-
- public LinesAndConditionsWithUncoveredVariationCounter(LinesAndConditionsWithUncoveredMetricKeys metricKeys) {
- this.metricKeys = metricKeys;
- }
-
- @Override
- public void initializeForSupportedLeaf(CounterInitializationContext counterContext) {
- Optional<Measure> newLinesMeasure = counterContext.getMeasure(metricKeys.getLines());
- if (!newLinesMeasure.isPresent() || !newLinesMeasure.get().hasVariation()) {
- return;
- }
- double newLines = newLinesMeasure.get().getVariation();
- long newConditions = (long) CoverageUtils.getMeasureVariations(counterContext, metricKeys.getConditions());
- long uncoveredLines = (long) CoverageUtils.getMeasureVariations(counterContext, metricKeys.getUncoveredLines());
- long uncoveredConditions = (long) CoverageUtils.getMeasureVariations(counterContext, metricKeys.getUncoveredConditions());
-
- long elements = (long) newLines + newConditions;
- this.elements.increment(elements);
- coveredElements.increment(elements - uncoveredConditions - uncoveredLines);
- }
-}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationFormula.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationFormula.java
deleted file mode 100644
index c7312c92de5..00000000000
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/LinesAndConditionsWithUncoveredVariationFormula.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.formula.coverage;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * A Formula which implements the aggregation the variations of lines and conditions measures (and their associated "uncovered" measures)
- * into the variations of a fifth measure.
- */
-public class LinesAndConditionsWithUncoveredVariationFormula extends CoverageVariationFormula<LinesAndConditionsWithUncoveredVariationCounter> {
- private final LinesAndConditionsWithUncoveredMetricKeys inputKeys;
- private final String outputKey;
-
- public LinesAndConditionsWithUncoveredVariationFormula(LinesAndConditionsWithUncoveredMetricKeys inputKeys, String outputKey) {
- this.inputKeys = requireNonNull(inputKeys);
- this.outputKey = requireNonNull(outputKey);
- }
-
- @Override
- public LinesAndConditionsWithUncoveredVariationCounter createNewCounter() {
- return new LinesAndConditionsWithUncoveredVariationCounter(inputKeys);
- }
-
- @Override
- public String[] getOutputMetricKeys() {
- return new String[] {outputKey};
- }
-}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationCounter.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationCounter.java
deleted file mode 100644
index b2615e7ab2c..00000000000
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationCounter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.formula.coverage;
-
-import org.sonar.ce.task.projectanalysis.formula.CounterInitializationContext;
-
-import static java.util.Objects.requireNonNull;
-import static org.sonar.ce.task.projectanalysis.formula.coverage.CoverageUtils.getMeasureVariations;
-
-public final class SingleWithUncoveredVariationCounter extends ElementsAndCoveredElementsVariationCounter {
- private final SingleWithUncoveredMetricKeys metricKeys;
-
- public SingleWithUncoveredVariationCounter(SingleWithUncoveredMetricKeys metricKeys) {
- this.metricKeys = requireNonNull(metricKeys);
- }
-
- @Override
- protected void initializeForSupportedLeaf(CounterInitializationContext counterContext) {
- long newConditions = (long) getMeasureVariations(counterContext, metricKeys.getCovered());
- long uncoveredConditions = (long) getMeasureVariations(counterContext, metricKeys.getUncovered());
- this.elements.increment(newConditions);
- coveredElements.increment(newConditions - uncoveredConditions);
- }
-}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationFormula.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationFormula.java
deleted file mode 100644
index 57f3d736496..00000000000
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/formula/coverage/SingleWithUncoveredVariationFormula.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.ce.task.projectanalysis.formula.coverage;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * A Formula which implements the aggregation of the variations of a measure and its associated "uncovered" measure
- * into the variations of a third measure.
- */
-public class SingleWithUncoveredVariationFormula extends CoverageVariationFormula<SingleWithUncoveredVariationCounter> {
- private final SingleWithUncoveredMetricKeys inputKeys;
- private final String outputKey;
-
- protected SingleWithUncoveredVariationFormula(SingleWithUncoveredMetricKeys inputKeys, String outputKey) {
- this.inputKeys = requireNonNull(inputKeys);
- this.outputKey = requireNonNull(outputKey);
- }
-
- @Override
- public SingleWithUncoveredVariationCounter createNewCounter() {
- return new SingleWithUncoveredVariationCounter(inputKeys);
- }
-
- @Override
- public String[] getOutputMetricKeys() {
- return new String[] {outputKey};
- }
-}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/IssueCounter.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/IssueCounter.java
index 77590b96107..8d44422f572 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/IssueCounter.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/IssueCounter.java
@@ -187,10 +187,9 @@ public class IssueCounter extends IssueVisitor {
if (!newIssueClassifier.isEnabled()) {
return;
}
- double unresolvedVariations = currentCounters.counterForPeriod().unresolved;
+ int unresolved = currentCounters.counterForPeriod().unresolved;
measureRepository.add(component, metricRepository.getByKey(NEW_VIOLATIONS_KEY), Measure.newMeasureBuilder()
- .setVariation(unresolvedVariations)
- .createNoValue());
+ .create(unresolved));
for (Map.Entry<String, String> entry : SEVERITY_TO_NEW_METRIC_KEY.entrySet()) {
String severity = entry.getKey();
@@ -198,8 +197,7 @@ public class IssueCounter extends IssueVisitor {
Multiset<String> bag = currentCounters.counterForPeriod().severityBag;
Metric metric = metricRepository.getByKey(metricKey);
measureRepository.add(component, metric, Measure.newMeasureBuilder()
- .setVariation(bag.count(severity))
- .createNoValue());
+ .create(bag.count(severity)));
}
// waiting for Java 8 lambda in order to factor this loop with the previous one
@@ -210,8 +208,7 @@ public class IssueCounter extends IssueVisitor {
Multiset<RuleType> bag = currentCounters.counterForPeriod().typeBag;
Metric metric = metricRepository.getByKey(metricKey);
measureRepository.add(component, metric, Measure.newMeasureBuilder()
- .setVariation(bag.count(type))
- .createNoValue());
+ .create(bag.count(type)));
}
}
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 1578d3716b4..9b2444cd85c 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
@@ -90,8 +90,8 @@ public class NewEffortAggregator extends IssueVisitor {
}
private void computeMeasure(Component component, Metric metric, EffortSum effortSum) {
- double variation = effortSum.isEmpty ? 0.0 : effortSum.newEffort;
- measureRepository.add(component, metric, Measure.newMeasureBuilder().setVariation(variation).createNoValue());
+ long value = effortSum.isEmpty ? 0 : effortSum.newEffort;
+ measureRepository.add(component, metric, Measure.newMeasureBuilder().create(value));
}
private class NewEffortCounter {
@@ -135,19 +135,19 @@ public class NewEffortAggregator extends IssueVisitor {
}
private static class EffortSum {
- private Double newEffort;
+ private Long newEffort;
private boolean isEmpty = true;
void add(long newEffort) {
- double previous = MoreObjects.firstNonNull(this.newEffort, 0D);
+ long previous = MoreObjects.firstNonNull(this.newEffort, 0L);
this.newEffort = previous + newEffort;
isEmpty = false;
}
void add(EffortSum other) {
- Double otherValue = other.newEffort;
+ Long otherValue = other.newEffort;
if (otherValue != null) {
- add(otherValue.longValue());
+ add(otherValue);
}
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimization.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimization.java
index 7ad8866bfbf..e30cf81f572 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimization.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimization.java
@@ -58,18 +58,9 @@ public class BestValueOptimization implements Predicate<Measure> {
private boolean isBestValueOptimized(Measure measure) {
return measure.getData() == null
&& !measure.hasQualityGateStatus()
- && hasNoVariation(measure, metric.getBestValue())
&& (measure.getValueType() == NO_VALUE || isBestValue(measure, metric.getBestValue()));
}
- private static boolean hasNoVariation(Measure measure, Double bestValue) {
- return !measure.hasVariation() || isVariationEmptyOrBestValue(measure.getVariation(), bestValue);
- }
-
- private static boolean isVariationEmptyOrBestValue(double variation, Double bestValue) {
- return compare(variation, 0D) == 0 || compare(variation, bestValue) == 0;
- }
-
private static boolean isBestValue(Measure measure, Double bestValue) {
switch (measure.getValueType()) {
case BOOLEAN:
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasure.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasure.java
index 7007ca7a3d8..e197ec8e041 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasure.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasure.java
@@ -39,82 +39,72 @@ public class LiveMeasureDtoToMeasure {
String data = measureDto.getDataAsString();
switch (metric.getType().getValueType()) {
case INT:
- return toIntegerMeasure(measureDto, value, data);
+ return toIntegerMeasure(value, data);
case LONG:
- return toLongMeasure(measureDto, value, data);
+ return toLongMeasure(value, data);
case DOUBLE:
- return toDoubleMeasure(measureDto, value, data);
+ return toDoubleMeasure(value, data);
case BOOLEAN:
- return toBooleanMeasure(measureDto, value, data);
+ return toBooleanMeasure(value, data);
case STRING:
- return toStringMeasure(measureDto, data);
+ return toStringMeasure(data);
case LEVEL:
- return toLevelMeasure(measureDto, data);
+ return toLevelMeasure(data);
case NO_VALUE:
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
default:
throw new IllegalArgumentException("Unsupported Measure.ValueType " + metric.getType().getValueType());
}
}
- private static Optional<Measure> toIntegerMeasure(LiveMeasureDto measureDto, @Nullable Double value, @Nullable String data) {
+ private static Optional<Measure> toIntegerMeasure(@Nullable Double value, @Nullable String data) {
if (value == null) {
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
}
- return of(setCommonProperties(Measure.newMeasureBuilder(), measureDto).create(value.intValue(), data));
+ return of(Measure.newMeasureBuilder().create(value.intValue(), data));
}
- private static Optional<Measure> toLongMeasure(LiveMeasureDto measureDto, @Nullable Double value, @Nullable String data) {
+ private static Optional<Measure> toLongMeasure(@Nullable Double value, @Nullable String data) {
if (value == null) {
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
}
- return of(setCommonProperties(Measure.newMeasureBuilder(), measureDto).create(value.longValue(), data));
+ return of(Measure.newMeasureBuilder().create(value.longValue(), data));
}
- private static Optional<Measure> toDoubleMeasure(LiveMeasureDto measureDto, @Nullable Double value, @Nullable String data) {
+ private static Optional<Measure> toDoubleMeasure(@Nullable Double value, @Nullable String data) {
if (value == null) {
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
}
- return of(setCommonProperties(Measure.newMeasureBuilder(), measureDto)
- .create(value, org.sonar.api.measures.Metric.MAX_DECIMAL_SCALE, data));
+ return of(Measure.newMeasureBuilder().create(value, org.sonar.api.measures.Metric.MAX_DECIMAL_SCALE, data));
}
- private static Optional<Measure> toBooleanMeasure(LiveMeasureDto measureDto, @Nullable Double value, @Nullable String data) {
+ private static Optional<Measure> toBooleanMeasure(@Nullable Double value, @Nullable String data) {
if (value == null) {
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
}
- return of(setCommonProperties(Measure.newMeasureBuilder(), measureDto).create(Double.compare(value, 1.0D) == 0, data));
+ return of(Measure.newMeasureBuilder().create(Double.compare(value, 1.0D) == 0, data));
}
- private static Optional<Measure> toStringMeasure(LiveMeasureDto measureDto, @Nullable String data) {
+ private static Optional<Measure> toStringMeasure(@Nullable String data) {
if (data == null) {
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
}
- return of(setCommonProperties(Measure.newMeasureBuilder(), measureDto).create(data));
+ return of(Measure.newMeasureBuilder().create(data));
}
- private static Optional<Measure> toLevelMeasure(LiveMeasureDto measureDto, @Nullable String data) {
+ private static Optional<Measure> toLevelMeasure(@Nullable String data) {
if (data == null) {
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
}
Optional<Measure.Level> level = toLevel(data);
if (!level.isPresent()) {
- return toNoValueMeasure(measureDto);
+ return toNoValueMeasure();
}
- return of(setCommonProperties(Measure.newMeasureBuilder(), measureDto).create(level.get()));
+ return of(Measure.newMeasureBuilder().create(level.get()));
}
- private static Optional<Measure> toNoValueMeasure(LiveMeasureDto measureDto) {
- return of(setCommonProperties(Measure.newMeasureBuilder(), measureDto).createNoValue());
+ private static Optional<Measure> toNoValueMeasure() {
+ return of(Measure.newMeasureBuilder().createNoValue());
}
-
- private static Measure.NewMeasureBuilder setCommonProperties(Measure.NewMeasureBuilder builder, LiveMeasureDto measureDto) {
- Double variation = measureDto.getVariation();
- if (variation != null) {
- builder.setVariation(variation);
- }
- return builder;
- }
-
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/Measure.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/Measure.java
index 1be2e0f1e50..bedb74a3fbd 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/Measure.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/Measure.java
@@ -28,6 +28,7 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.sonar.ce.task.projectanalysis.util.cache.DoubleCache;
+import static com.google.common.base.MoreObjects.toStringHelper;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Objects.requireNonNull;
@@ -139,20 +140,8 @@ public interface Measure {
*/
QualityGateStatus getQualityGateStatus();
- /**
- * Any Measure, which ever is its value type, can have a variation.
- */
- boolean hasVariation();
-
- /**
- * The variation of this measure.
- *
- * @throws IllegalStateException if the measure has no variation
- */
- double getVariation();
-
default boolean isEmpty() {
- return getValueType() == ValueType.NO_VALUE && !hasVariation() && getData() == null;
+ return getValueType() == ValueType.NO_VALUE && getData() == null;
}
static NewMeasureBuilder newMeasureBuilder() {
@@ -173,17 +162,13 @@ public interface Measure {
private final Level dataLevel;
@CheckForNull
private final QualityGateStatus qualityGateStatus;
- @CheckForNull
- private final Double variation;
- private MeasureImpl(ValueType valueType, @Nullable Double value, @Nullable String data, @Nullable Level dataLevel,
- @Nullable QualityGateStatus qualityGateStatus, @Nullable Double variation) {
+ private MeasureImpl(ValueType valueType, @Nullable Double value, @Nullable String data, @Nullable Level dataLevel, @Nullable QualityGateStatus qualityGateStatus) {
this.valueType = valueType;
this.value = DoubleCache.intern(value);
this.data = data;
this.dataLevel = dataLevel;
this.qualityGateStatus = qualityGateStatus;
- this.variation = variation;
}
@Override
@@ -243,17 +228,6 @@ public interface Measure {
return this.qualityGateStatus;
}
- @Override
- public boolean hasVariation() {
- return variation != null;
- }
-
- @Override
- public double getVariation() {
- checkState(variation != null, "Measure does not have variation");
- return variation;
- }
-
private static void checkValueType(ValueType expected, ValueType valueType) {
if (valueType != expected) {
throw new IllegalStateException(
@@ -266,13 +240,12 @@ public interface Measure {
@Override
public String toString() {
- return com.google.common.base.MoreObjects.toStringHelper(this)
+ return toStringHelper(this)
.add("valueType", valueType)
.add("value", value)
.add("data", data)
.add("dataLevel", dataLevel)
.add("qualityGateStatus", qualityGateStatus)
- .add("variations", variation)
.toString();
}
}
@@ -342,16 +315,6 @@ public interface Measure {
}
@Override
- public boolean hasVariation() {
- return false;
- }
-
- @Override
- public double getVariation() {
- throw new IllegalStateException("Measure does not have variation");
- }
-
- @Override
public boolean equals(Object o) {
if (this == o)
return true;
@@ -368,21 +331,14 @@ public interface Measure {
@Override
public String toString() {
- return com.google.common.base.MoreObjects.toStringHelper(this)
+ return toStringHelper(this)
.add("valueType", valueType)
.add("value", value)
.toString();
}
}
- class NoValueVariationMeasureImpl implements Measure {
- @Nullable
- private Double variation;
-
- private NoValueVariationMeasureImpl(@Nullable Double variation) {
- this.variation = variation;
- }
-
+ class NoValueMeasureImpl implements Measure {
@Override
public ValueType getValueType() {
return ValueType.NO_VALUE;
@@ -416,7 +372,6 @@ public interface Measure {
@Override
public Level getLevelValue() {
throw new IllegalStateException();
-
}
@Override
@@ -435,39 +390,21 @@ public interface Measure {
}
@Override
- public boolean hasVariation() {
- return variation != null;
- }
-
- @Override
- public double getVariation() {
- checkState(variation != null, "Measure does not have variation");
- return variation;
- }
-
- @Override
public String toString() {
- return com.google.common.base.MoreObjects.toStringHelper(this)
+ return toStringHelper(this)
.add("valueType", ValueType.NO_VALUE)
- .add("variations", variation)
.toString();
}
}
class NewMeasureBuilder {
private QualityGateStatus qualityGateStatus;
- private Double variation;
public NewMeasureBuilder setQualityGateStatus(QualityGateStatus qualityGateStatus) {
this.qualityGateStatus = requireNonNull(qualityGateStatus, "QualityGateStatus can not be set to null");
return this;
}
- public NewMeasureBuilder setVariation(double variation) {
- this.variation = variation;
- return this;
- }
-
public Measure create(boolean value, @Nullable String data) {
return createInternal(ValueType.BOOLEAN, value ? 1.0D : 0.0D, data);
}
@@ -499,30 +436,34 @@ public interface Measure {
}
private Measure createInternal(ValueType type, double value, @Nullable String data) {
- if (data == null && qualityGateStatus == null && variation == null) {
+ if (data == null && qualityGateStatus == null) {
return new ValueMeasureImpl(type, value);
}
- return new MeasureImpl(type, value, data, null, qualityGateStatus, variation);
+ return new MeasureImpl(type, value, data, null, qualityGateStatus);
}
public Measure create(double value, int decimalScale) {
return create(value, decimalScale, null);
}
+ public Measure create(double value) {
+ return create(value, org.sonar.api.measures.Metric.MAX_DECIMAL_SCALE);
+ }
+
public Measure create(String value) {
- return new MeasureImpl(ValueType.STRING, null, requireNonNull(value), null, qualityGateStatus, variation);
+ return new MeasureImpl(ValueType.STRING, null, requireNonNull(value), null, qualityGateStatus);
}
public Measure create(Level level) {
- return new MeasureImpl(ValueType.LEVEL, null, null, requireNonNull(level), qualityGateStatus, variation);
+ return new MeasureImpl(ValueType.LEVEL, null, null, requireNonNull(level), qualityGateStatus);
}
public Measure createNoValue() {
if (qualityGateStatus == null) {
- return new NoValueVariationMeasureImpl(variation);
+ return new NoValueMeasureImpl();
}
- return new MeasureImpl(ValueType.NO_VALUE, null, null, null, qualityGateStatus, variation);
+ return new MeasureImpl(ValueType.NO_VALUE, null, null, null, qualityGateStatus);
}
private static double scale(double value, int decimalScale) {
@@ -534,7 +475,6 @@ public interface Measure {
final class UpdateMeasureBuilder {
private final Measure source;
private QualityGateStatus qualityGateStatus;
- private Double variation;
public UpdateMeasureBuilder(Measure source) {
this.source = requireNonNull(source, "Can not create a measure from null");
@@ -554,19 +494,6 @@ public interface Measure {
return this;
}
- /**
- * Sets the variation of the updated Measure to create.
- *
- * @throws UnsupportedOperationException if the source measure already has a variation
- */
- public UpdateMeasureBuilder setVariation(double variation) {
- if (source.hasVariation()) {
- throw new UnsupportedOperationException("Variation can not be changed if already set on source Measure");
- }
- this.variation = variation;
- return this;
- }
-
public Measure create() {
Double value;
switch (source.getValueType()) {
@@ -589,13 +516,7 @@ public interface Measure {
}
Level level = source.getValueType() == ValueType.LEVEL ? source.getLevelValue() : null;
QualityGateStatus status = source.hasQualityGateStatus() ? source.getQualityGateStatus() : qualityGateStatus;
- Double var;
- if (source.hasVariation()) {
- var = source.getVariation();
- } else {
- var = variation;
- }
- return new MeasureImpl(source.getValueType(), value, source.getData(), level, status, var);
+ return new MeasureImpl(source.getValueType(), value, source.getData(), level, status);
}
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasure.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasure.java
index 0ed0ec491ce..2494c1a3eca 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasure.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasure.java
@@ -116,14 +116,6 @@ public class MeasureDtoToMeasure {
builder.setQualityGateStatus(new QualityGateStatus(qualityGateStatus.get(), measureDto.getAlertText()));
}
}
- if (hasAnyVariation(measureDto)) {
- builder.setVariation(measureDto.getVariation());
- }
return builder;
}
-
- private static boolean hasAnyVariation(MeasureDto measureDto) {
- return measureDto.getVariation() != null;
- }
-
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDto.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDto.java
index e456a66c0f8..edb91a9fb8b 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDto.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDto.java
@@ -42,9 +42,6 @@ public class MeasureToMeasureDto {
out.setMetricUuid(metric.getUuid());
out.setComponentUuid(component.getUuid());
out.setAnalysisUuid(analysisMetadataHolder.getUuid());
- if (measure.hasVariation()) {
- out.setVariation(measure.getVariation());
- }
if (measure.hasQualityGateStatus()) {
setAlert(out, measure.getQualityGateStatus());
}
@@ -58,9 +55,6 @@ public class MeasureToMeasureDto {
out.setMetricUuid(metric.getUuid());
out.setComponentUuid(component.getUuid());
out.setProjectUuid(treeRootHolder.getRoot().getUuid());
- if (measure.hasVariation()) {
- out.setVariation(measure.getVariation());
- }
out.setValue(valueAsDouble(measure));
out.setData(data(measure));
return out;
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluator.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluator.java
index 83d9731bdd5..db8e1556cdf 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluator.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluator.java
@@ -45,7 +45,7 @@ public final class ConditionEvaluator {
public EvaluationResult evaluate(Condition condition, Measure measure) {
checkArgument(SUPPORTED_METRIC_TYPE.contains(condition.getMetric().getType()), "Conditions on MetricType %s are not supported", condition.getMetric().getType());
- Comparable measureComparable = parseMeasure(condition, measure);
+ Comparable measureComparable = parseMeasure(measure);
if (measureComparable == null) {
return new EvaluationResult(Measure.Level.OK, null);
}
@@ -100,10 +100,7 @@ public final class ConditionEvaluator {
}
@CheckForNull
- private static Comparable parseMeasure(Condition condition, Measure measure) {
- if (condition.useVariation()) {
- return parseMeasureFromVariation(condition, measure);
- }
+ private static Comparable parseMeasure(Measure measure) {
switch (measure.getValueType()) {
case INT:
return measure.getIntValue();
@@ -120,26 +117,4 @@ public final class ConditionEvaluator {
String.format("Unsupported measure ValueType %s. Can not parse measure to a Comparable", measure.getValueType()));
}
}
-
- @CheckForNull
- private static Comparable parseMeasureFromVariation(Condition condition, Measure measure) {
- if (!measure.hasVariation()) {
- return null;
- }
-
- Double variation = measure.getVariation();
- Metric.MetricType metricType = condition.getMetric().getType();
- switch (metricType.getValueType()) {
- case INT:
- return variation.intValue();
- case LONG:
- return variation.longValue();
- case DOUBLE:
- return variation;
- case NO_VALUE:
- case LEVEL:
- default:
- throw new IllegalArgumentException("Unsupported metric type " + metricType);
- }
- }
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitor.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitor.java
index 421bd2b789d..007c8bc9b71 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitor.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitor.java
@@ -110,11 +110,11 @@ public class NewMaintainabilityMeasuresVisitor extends PathAwareVisitorAdapter<N
}
double density = computeDensity(path.current());
double newDebtRatio = 100.0 * density;
- double newMaintainability = ratingSettings.getDebtRatingGrid().getRatingForDensity(density).getIndex();
- long newDevelopmentCost = path.current().getDevCost().getValue();
- measureRepository.add(component, this.newDevelopmentCostMetric, newMeasureBuilder().setVariation(newDevelopmentCost).createNoValue());
- measureRepository.add(component, this.newDebtRatioMetric, newMeasureBuilder().setVariation(newDebtRatio).createNoValue());
- measureRepository.add(component, this.newMaintainabilityRatingMetric, newMeasureBuilder().setVariation(newMaintainability).createNoValue());
+ int newMaintainability = ratingSettings.getDebtRatingGrid().getRatingForDensity(density).getIndex();
+ float newDevelopmentCost = path.current().getDevCost().getValue();
+ measureRepository.add(component, this.newDevelopmentCostMetric, newMeasureBuilder().create(newDevelopmentCost));
+ measureRepository.add(component, this.newDebtRatioMetric, newMeasureBuilder().create(newDebtRatio));
+ measureRepository.add(component, this.newMaintainabilityRatingMetric, newMeasureBuilder().create(newMaintainability));
}
private static double computeDensity(Counter counter) {
@@ -133,10 +133,7 @@ public class NewMaintainabilityMeasuresVisitor extends PathAwareVisitorAdapter<N
}
private static long getLongValue(Measure measure) {
- if (measure.hasVariation()) {
- return (long) measure.getVariation();
- }
- return 0L;
+ return measure.getLongValue();
}
private void initNewDebtRatioCounter(Component file, Path<Counter> path) {
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java
index d29faba43f5..7880c70c866 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java
@@ -112,7 +112,7 @@ public class NewReliabilityAndSecurityRatingMeasuresVisitor extends PathAwareVis
entry -> measureRepository.add(
component,
metricsByKey.get(entry.getKey()),
- newMeasureBuilder().setVariation(entry.getValue().getValue().getIndex()).createNoValue()));
+ newMeasureBuilder().create(entry.getValue().getValue().getIndex())));
addToParent(path);
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitor.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitor.java
index da25f1f0a3d..6eb0638a54b 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitor.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitor.java
@@ -69,8 +69,8 @@ public class NewSecurityReviewMeasuresVisitor extends PathAwareVisitorAdapter<Se
computeMeasure(project, path);
// The following measures are only computed on projects level as they are required to compute the others measures on applications
- measureRepository.add(project, newSecurityHotspotsReviewedStatusMetric, Measure.newMeasureBuilder().setVariation(path.current().getHotspotsReviewed()).createNoValue());
- measureRepository.add(project, newSecurityHotspotsToReviewStatusMetric, Measure.newMeasureBuilder().setVariation(path.current().getHotspotsToReview()).createNoValue());
+ measureRepository.add(project, newSecurityHotspotsReviewedStatusMetric, Measure.newMeasureBuilder().create(path.current().getHotspotsReviewed()));
+ measureRepository.add(project, newSecurityHotspotsToReviewStatusMetric, Measure.newMeasureBuilder().create(path.current().getHotspotsToReview()));
}
@Override
@@ -91,8 +91,8 @@ public class NewSecurityReviewMeasuresVisitor extends PathAwareVisitorAdapter<Se
.forEach(issue -> path.current().processHotspot(issue));
Optional<Double> percent = computePercent(path.current().getHotspotsToReview(), path.current().getHotspotsReviewed());
- measureRepository.add(component, newSecurityReviewRatingMetric, Measure.newMeasureBuilder().setVariation(computeRating(percent.orElse(null)).getIndex()).createNoValue());
- percent.ifPresent(p -> measureRepository.add(component, newSecurityHotspotsReviewedMetric, Measure.newMeasureBuilder().setVariation(p).createNoValue()));
+ measureRepository.add(component, newSecurityReviewRatingMetric, Measure.newMeasureBuilder().create(computeRating(percent.orElse(null)).getIndex()));
+ percent.ifPresent(p -> measureRepository.add(component, newSecurityHotspotsReviewedMetric, Measure.newMeasureBuilder().create(p)));
if (!path.isRoot()) {
path.parent().add(path.current());
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStep.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStep.java
index ae5eb75170c..54d006056a9 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStep.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStep.java
@@ -35,10 +35,10 @@ import org.sonar.ce.task.projectanalysis.formula.CreateMeasureContext;
import org.sonar.ce.task.projectanalysis.formula.Formula;
import org.sonar.ce.task.projectanalysis.formula.FormulaExecutorComponentVisitor;
import org.sonar.ce.task.projectanalysis.formula.counter.IntValue;
+import org.sonar.ce.task.projectanalysis.formula.coverage.LinesAndConditionsWithUncoveredFormula;
import org.sonar.ce.task.projectanalysis.formula.coverage.LinesAndConditionsWithUncoveredMetricKeys;
-import org.sonar.ce.task.projectanalysis.formula.coverage.LinesAndConditionsWithUncoveredVariationFormula;
+import org.sonar.ce.task.projectanalysis.formula.coverage.SingleWithUncoveredFormula;
import org.sonar.ce.task.projectanalysis.formula.coverage.SingleWithUncoveredMetricKeys;
-import org.sonar.ce.task.projectanalysis.formula.coverage.SingleWithUncoveredVariationFormula;
import org.sonar.ce.task.projectanalysis.measure.Measure;
import org.sonar.ce.task.projectanalysis.measure.MeasureRepository;
import org.sonar.ce.task.projectanalysis.metric.Metric;
@@ -56,7 +56,7 @@ import static org.sonar.api.measures.CoreMetrics.NEW_UNCOVERED_LINES_KEY;
import static org.sonar.ce.task.projectanalysis.measure.Measure.newMeasureBuilder;
/**
- * Computes measures related to the New Coverage. These measures do not have values, only variations.
+ * Computes measures related to the New Coverage.
*/
public class NewCoverageMeasuresStep implements ComputationStep {
private static final List<Formula<?>> FORMULAS = List.of(
@@ -95,7 +95,7 @@ public class NewCoverageMeasuresStep implements ComputationStep {
return "Compute new coverage";
}
- private static class NewCoverageFormula extends LinesAndConditionsWithUncoveredVariationFormula {
+ private static class NewCoverageFormula extends LinesAndConditionsWithUncoveredFormula {
NewCoverageFormula() {
super(
new LinesAndConditionsWithUncoveredMetricKeys(
@@ -105,7 +105,7 @@ public class NewCoverageMeasuresStep implements ComputationStep {
}
}
- private static class NewBranchCoverageFormula extends SingleWithUncoveredVariationFormula {
+ private static class NewBranchCoverageFormula extends SingleWithUncoveredFormula {
NewBranchCoverageFormula() {
super(
new SingleWithUncoveredMetricKeys(NEW_CONDITIONS_TO_COVER_KEY, NEW_UNCOVERED_CONDITIONS_KEY),
@@ -113,7 +113,7 @@ public class NewCoverageMeasuresStep implements ComputationStep {
}
}
- private static class NewLineCoverageFormula extends SingleWithUncoveredVariationFormula {
+ private static class NewLineCoverageFormula extends SingleWithUncoveredFormula {
NewLineCoverageFormula() {
super(
new SingleWithUncoveredMetricKeys(NEW_LINES_TO_COVER_KEY, NEW_UNCOVERED_LINES_KEY),
@@ -143,7 +143,7 @@ public class NewCoverageMeasuresStep implements ComputationStep {
public Optional<Measure> createMeasure(NewCoverageCounter counter, CreateMeasureContext context) {
if (counter.hasNewCode()) {
int value = computeValueForMetric(counter, context.getMetric());
- return Optional.of(newMeasureBuilder().setVariation(value).createNoValue());
+ return Optional.of(newMeasureBuilder().create(value));
}
return Optional.empty();
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStep.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStep.java
index 395bcf96e3a..87dde1e356d 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStep.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStep.java
@@ -205,7 +205,7 @@ public class NewSizeMeasuresStep implements ComputationStep {
private static Optional<Measure> createMeasure(IntValue intValue) {
return intValue.isSet()
- ? Optional.of(Measure.newMeasureBuilder().setVariation(intValue.getValue()).createNoValue())
+ ? Optional.of(Measure.newMeasureBuilder().create(intValue.getValue()))
: Optional.empty();
}
@@ -213,11 +213,11 @@ public class NewSizeMeasuresStep implements ComputationStep {
IntValue newLines = counter.newLines;
IntValue newDuplicatedLines = counter.newDuplicatedLines;
if (newLines.isSet() && newDuplicatedLines.isSet()) {
- int newLinesVariations = newLines.getValue();
- int newDuplicatedLinesVariations = newDuplicatedLines.getValue();
- if (newLinesVariations > 0D) {
- double density = Math.min(100D, 100D * newDuplicatedLinesVariations / newLinesVariations);
- return Optional.of(Measure.newMeasureBuilder().setVariation(density).createNoValue());
+ int newLinesValue = newLines.getValue();
+ int newDuplicatedLinesValue = newDuplicatedLines.getValue();
+ if (newLinesValue > 0D) {
+ double density = Math.min(100D, 100D * newDuplicatedLinesValue / newLinesValue);
+ return Optional.of(Measure.newMeasureBuilder().create(density));
}
}
return Optional.empty();
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStep.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStep.java
index e9dd25a1df1..69d44182495 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStep.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStep.java
@@ -217,7 +217,7 @@ public class PersistLiveMeasuresStep implements ComputationStep {
@Override
public boolean test(@Nonnull Measure input) {
- return input.getValueType() != Measure.ValueType.NO_VALUE || input.hasVariation() || input.getData() != null;
+ return input.getValueType() != Measure.ValueType.NO_VALUE || input.getData() != null;
}
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCase.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCase.java
index 027b0b42bab..f69f7f7f039 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCase.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCase.java
@@ -59,7 +59,7 @@ public class SmallChangesetQualityGateSpecialCase {
private boolean isSmallChangeset(Component project) {
return measureRepository.getRawMeasure(project, metricRepository.getByKey(CoreMetrics.NEW_LINES_KEY))
- .map(newLines -> newLines.hasVariation() && newLines.getVariation() < MAXIMUM_NEW_LINES_FOR_SMALL_CHANGESETS)
+ .map(newLines -> newLines.getIntValue() < MAXIMUM_NEW_LINES_FOR_SMALL_CHANGESETS)
.orElse(false);
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStep.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStep.java
index 84f0013a619..f47661d59ab 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStep.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStep.java
@@ -36,7 +36,7 @@ import static org.sonar.db.DatabaseUtils.getString;
public class ExportLiveMeasuresStep implements ComputationStep {
- private static final String QUERY = "select pm.metric_uuid, pm.component_uuid, pm.text_value, pm.value, pm.variation" +
+ private static final String QUERY = "select pm.metric_uuid, pm.component_uuid, pm.text_value, pm.value, m.name" +
" from live_measures pm" +
" join metrics m on m.uuid=pm.metric_uuid" +
" join components p on p.uuid = pm.component_uuid" +
@@ -95,12 +95,13 @@ public class ExportLiveMeasuresStep implements ComputationStep {
.setComponentRef(componentRef)
.setTextValue(defaultString(getString(rs, 3)));
Double value = getDouble(rs, 4);
- if (value != null) {
- builder.setDoubleValue(doubleBuilder.setValue(value).build());
- }
- Double variation = getDouble(rs, 5);
- if (variation != null) {
- builder.setVariation(doubleBuilder.setValue(variation).build());
+ String metricKey = getString(rs, 5);
+ if (value != null && metricKey != null) {
+ if (metricKey.startsWith("new_")) {
+ builder.setVariation(doubleBuilder.setValue(value).build());
+ } else {
+ builder.setDoubleValue(doubleBuilder.setValue(value).build());
+ }
}
return builder.build();
}
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStep.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStep.java
index ac5969d5d55..a0bbfc71061 100644
--- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStep.java
+++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStep.java
@@ -39,7 +39,7 @@ import static org.sonar.db.DatabaseUtils.getString;
public class ExportMeasuresStep implements ComputationStep {
private static final String QUERY = "select pm.metric_uuid, pm.analysis_uuid, pm.component_uuid, pm.text_value, pm.value," +
- " pm.alert_status, pm.alert_text, pm.variation_value_1" +
+ " pm.alert_status, pm.alert_text, m.name" +
" from project_measures pm" +
" join metrics m on m.uuid=pm.metric_uuid" +
" join snapshots s on s.uuid=pm.analysis_uuid" +
@@ -104,6 +104,7 @@ public class ExportMeasuresStep implements ComputationStep {
ProjectDump.DoubleValue.Builder doubleBuilder) throws SQLException {
long componentRef = componentRepository.getRef(rs.getString(3));
int metricRef = metricHolder.add(rs.getString(1));
+ String metricKey = rs.getString(8);
builder
.clear()
@@ -112,15 +113,16 @@ public class ExportMeasuresStep implements ComputationStep {
.setComponentRef(componentRef)
.setTextValue(defaultString(getString(rs, 4)));
Double value = getDouble(rs, 5);
+
if (value != null) {
- builder.setDoubleValue(doubleBuilder.setValue(value).build());
+ if (metricKey.startsWith("new_")) {
+ builder.setVariation1(doubleBuilder.setValue(value).build());
+ } else {
+ builder.setDoubleValue(doubleBuilder.setValue(value).build());
+ }
}
builder.setAlertStatus(defaultString(getString(rs, 6)));
builder.setAlertText(defaultString(getString(rs, 7)));
- Double var1 = getDouble(rs, 8);
- if (var1 != null) {
- builder.setVariation1(doubleBuilder.setValue(var1).build());
- }
return builder.build();
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ReportFormulaExecutorComponentVisitorTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ReportFormulaExecutorComponentVisitorTest.java
index 17a5aa9b85a..486f73af574 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ReportFormulaExecutorComponentVisitorTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ReportFormulaExecutorComponentVisitorTest.java
@@ -28,7 +28,6 @@ import org.sonar.ce.task.projectanalysis.component.Component;
import org.sonar.ce.task.projectanalysis.component.PathAwareCrawler;
import org.sonar.ce.task.projectanalysis.component.ReportComponent;
import org.sonar.ce.task.projectanalysis.component.TreeRootHolderRule;
-import org.sonar.ce.task.projectanalysis.formula.counter.IntValue;
import org.sonar.ce.task.projectanalysis.measure.Measure;
import org.sonar.ce.task.projectanalysis.measure.MeasureRepositoryRule;
import org.sonar.ce.task.projectanalysis.metric.Metric;
@@ -130,25 +129,6 @@ public class ReportFormulaExecutorComponentVisitorTest {
}
@Test
- public void verify_aggregation_on_variation() {
- treeRootHolder.setRoot(BALANCED_COMPONENT_TREE);
-
- measureRepository.addRawMeasure(FILE_1_REF, NEW_LINES_TO_COVER_KEY, createMeasureWithVariation(10));
- measureRepository.addRawMeasure(FILE_2_REF, NEW_LINES_TO_COVER_KEY, createMeasureWithVariation(8));
- measureRepository.addRawMeasure(FILE_3_REF, NEW_LINES_TO_COVER_KEY, createMeasureWithVariation(2));
-
- new PathAwareCrawler<>(formulaExecutorComponentVisitor(new FakeVariationFormula()))
- .visit(BALANCED_COMPONENT_TREE);
-
- assertAddedRawMeasureVariation(ROOT_REF, 20);
- assertAddedRawMeasureVariation(DIRECTORY_1_REF, 18);
- assertAddedRawMeasureVariation(FILE_1_REF, 10);
- assertAddedRawMeasureVariation(FILE_2_REF, 8);
- assertAddedRawMeasureVariation(DIRECTORY_2_REF, 2);
- assertAddedRawMeasureVariation(FILE_3_REF, 2);
- }
-
- @Test
public void measures_are_0_when_there_is_no_input_measure() {
ReportComponent project = ReportComponent.builder(PROJECT, ROOT_REF)
.addChildren(
@@ -219,13 +199,13 @@ public class ReportFormulaExecutorComponentVisitorTest {
treeRootHolder.setRoot(root);
measureRepository.addRawMeasure(FILE_1_REF, NCLOC_KEY, newMeasureBuilder().create(2));
-// expectedException.expectCause(
-// hasType(UnsupportedOperationException.class)
-// .andMessage(String.format("A measure can only be set once for Component (ref=%s), Metric (key=%s)", FILE_1_REF, NCLOC_KEY))
-// );
+ // expectedException.expectCause(
+ // hasType(UnsupportedOperationException.class)
+ // .andMessage(String.format("A measure can only be set once for Component (ref=%s), Metric (key=%s)", FILE_1_REF, NCLOC_KEY))
+ // );
assertThatThrownBy(() -> new PathAwareCrawler<>(formulaExecutorComponentVisitor(new FakeFormula())).visit(root))
- .hasCause( new UnsupportedOperationException(String.format("A measure can only be set once for Component (ref=%s), Metric (key=%s)", FILE_1_REF, NCLOC_KEY)));
+ .hasCause(new UnsupportedOperationException(String.format("A measure can only be set once for Component (ref=%s), Metric (key=%s)", FILE_1_REF, NCLOC_KEY)));
}
@Test
@@ -234,8 +214,8 @@ public class ReportFormulaExecutorComponentVisitorTest {
treeRootHolder.setRoot(root);
measureRepository.addRawMeasure(ROOT_REF, NCLOC_KEY, newMeasureBuilder().create(10));
-// expectedException.expectCause(hasType(UnsupportedOperationException.class)
-// .andMessage(String.format("A measure can only be set once for Component (ref=%s), Metric (key=%s)", ROOT_REF, NCLOC_KEY)));
+ // expectedException.expectCause(hasType(UnsupportedOperationException.class)
+ // .andMessage(String.format("A measure can only be set once for Component (ref=%s), Metric (key=%s)", ROOT_REF, NCLOC_KEY)));
assertThatThrownBy(() -> {
new PathAwareCrawler<>(formulaExecutorComponentVisitor(new FakeFormula()))
@@ -249,19 +229,10 @@ public class ReportFormulaExecutorComponentVisitorTest {
.buildFor(ImmutableList.of(formula));
}
- private static Measure createMeasureWithVariation(double variation) {
- return newMeasureBuilder().setVariation(variation).createNoValue();
- }
-
private void assertAddedRawMeasure(int componentRef, int expectedValue) {
assertThat(toEntries(measureRepository.getAddedRawMeasures(componentRef))).containsOnly(entryOf(NCLOC_KEY, newMeasureBuilder().create(expectedValue)));
}
- private void assertAddedRawMeasureVariation(int componentRef, int variation) {
- assertThat(toEntries(measureRepository.getAddedRawMeasures(componentRef)))
- .containsOnly(entryOf(NEW_COVERAGE_KEY, createMeasureWithVariation(variation)));
- }
-
private class FakeFormula implements Formula<FakeCounter> {
@Override
@@ -336,55 +307,4 @@ public class ReportFormulaExecutorComponentVisitorTest {
}
}
}
-
- private class FakeVariationFormula implements Formula<FakeVariationCounter> {
-
- @Override
- public FakeVariationCounter createNewCounter() {
- return new FakeVariationCounter();
- }
-
- @Override
- public Optional<Measure> createMeasure(FakeVariationCounter counter, CreateMeasureContext context) {
- // verify the context which is passed to the method
- assertThat(context.getComponent()).isNotNull();
- assertThat(context.getMetric()).isSameAs(metricRepository.getByKey(NEW_COVERAGE_KEY));
-
- IntValue measureVariations = counter.values;
- if (measureVariations.isSet()) {
- return Optional.of(
- newMeasureBuilder()
- .setVariation(measureVariations.getValue())
- .createNoValue());
- }
- return Optional.empty();
- }
-
- @Override
- public String[] getOutputMetricKeys() {
- return new String[] {NEW_COVERAGE_KEY};
- }
- }
-
- private static class FakeVariationCounter implements Counter<FakeVariationCounter> {
- private final IntValue values = new IntValue();
-
- @Override
- public void aggregate(FakeVariationCounter counter) {
- values.increment(counter.values);
- }
-
- @Override
- public void initialize(CounterInitializationContext context) {
- // verify the context which is passed to the method
- assertThat(context.getLeaf().getChildren()).isEmpty();
-
- Optional<Measure> measureOptional = context.getMeasure(NEW_LINES_TO_COVER_KEY);
- if (!measureOptional.isPresent()) {
- return;
- }
- this.values.increment((int) measureOptional.get().getVariation());
- }
- }
-
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ViewsFormulaExecutorComponentVisitorTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ViewsFormulaExecutorComponentVisitorTest.java
index 2ff98d57503..328b3d9dc31 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ViewsFormulaExecutorComponentVisitorTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/ViewsFormulaExecutorComponentVisitorTest.java
@@ -125,38 +125,6 @@ public class ViewsFormulaExecutorComponentVisitorTest {
}
@Test
- public void verify_aggregation_on_variations() {
- treeRootHolder.setRoot(BALANCED_COMPONENT_TREE);
-
- addRawMeasureWithVariation(PROJECT_VIEW_1_REF, NEW_LINES_TO_COVER_KEY, 10);
- addRawMeasureWithVariation(PROJECT_VIEW_2_REF, NEW_LINES_TO_COVER_KEY, 8);
- addRawMeasureWithVariation(PROJECT_VIEW_3_REF, NEW_LINES_TO_COVER_KEY, 2);
- addRawMeasureWithVariation(PROJECT_VIEW_4_REF, NEW_LINES_TO_COVER_KEY, 3);
-
- new PathAwareCrawler<>(formulaExecutorComponentVisitor(new FakeVariationFormula()))
- .visit(BALANCED_COMPONENT_TREE);
-
- verifyProjectViewsHasNoAddedRawMeasures();
- verifySingleMetricWithVariation(SUB_SUBVIEW_REF, 18);
- verifySingleMetricWithVariation(SUBVIEW_1_REF, 18);
- verifySingleMetricWithVariation(SUBVIEW_2_REF, 2);
- verifySingleMetricWithVariation(ROOT_REF, 23);
- }
-
- private void verifySingleMetricWithVariation(int componentRef, int variation) {
- assertThat(toEntries(measureRepository.getAddedRawMeasures(componentRef)))
- .containsOnly(entryOf(NEW_COVERAGE_KEY, createMeasureWithVariation(variation)));
- }
-
- private MeasureRepositoryRule addRawMeasureWithVariation(int componentRef, String metricKey, int variation) {
- return measureRepository.addRawMeasure(componentRef, metricKey, createMeasureWithVariation(variation));
- }
-
- private static Measure createMeasureWithVariation(double variation) {
- return newMeasureBuilder().setVariation(variation).createNoValue();
- }
-
- @Test
public void verify_no_measure_added_on_projectView() {
ViewsComponent project = ViewsComponent.builder(VIEW, ROOT_REF)
.addChildren(
@@ -287,10 +255,7 @@ public class ViewsFormulaExecutorComponentVisitorTest {
IntValue measureVariations = counter.values;
if (measureVariations.isSet()) {
- return Optional.of(
- newMeasureBuilder()
- .setVariation(measureVariations.getValue())
- .createNoValue());
+ return Optional.of(newMeasureBuilder().create(measureVariations.getValue()));
}
return Optional.empty();
}
@@ -317,7 +282,7 @@ public class ViewsFormulaExecutorComponentVisitorTest {
if (!measureOptional.isPresent()) {
return;
}
- this.values.increment((int) measureOptional.get().getVariation());
+ this.values.increment(measureOptional.get().getIntValue());
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/IntValueTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/IntValueTest.java
index ed0d0d28c42..1d398d6a316 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/IntValueTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/IntValueTest.java
@@ -25,58 +25,58 @@ import static org.assertj.core.api.Assertions.assertThat;
public class IntValueTest {
@Test
- public void newly_created_IntVariationValue_is_unset_and_has_value_0() {
- verifyUnsetVariationValue(new IntValue());
+ public void newly_created_IntValue_is_unset_and_has_value_0() {
+ verifyUnsetValue(new IntValue());
}
@Test
- public void increment_int_sets_IntVariationValue_and_increments_value() {
- verifySetVariationValue(new IntValue().increment(10), 10);
+ public void increment_int_sets_IntValue_and_increments_value() {
+ verifySetValue(new IntValue().increment(10), 10);
}
@Test
- public void increment_IntVariationValue_has_no_effect_if_arg_is_null() {
- verifyUnsetVariationValue(new IntValue().increment(null));
+ public void increment_IntValue_has_no_effect_if_arg_is_null() {
+ verifyUnsetValue(new IntValue().increment(null));
}
@Test
- public void increment_IntVariationValue_has_no_effect_if_arg_is_unset() {
- verifyUnsetVariationValue(new IntValue().increment(new IntValue()));
+ public void increment_IntValue_has_no_effect_if_arg_is_unset() {
+ verifyUnsetValue(new IntValue().increment(new IntValue()));
}
@Test
- public void increment_IntVariationValue_increments_by_the_value_of_the_arg() {
+ public void increment_IntValue_increments_by_the_value_of_the_arg() {
IntValue source = new IntValue().increment(10);
IntValue target = new IntValue().increment(source);
- verifySetVariationValue(target, 10);
+ verifySetValue(target, 10);
}
@Test
- public void multiple_calls_to_increment_IntVariationValue_increments_by_the_value_of_the_arg() {
+ public void multiple_calls_to_increment_IntValue_increments_by_the_value_of_the_arg() {
IntValue target = new IntValue()
.increment(new IntValue().increment(35))
.increment(new IntValue().increment(10));
- verifySetVariationValue(target, 45);
+ verifySetValue(target, 45);
}
@Test
public void multiples_calls_to_increment_int_increment_the_value() {
- IntValue variationValue = new IntValue()
+ IntValue value = new IntValue()
.increment(10)
.increment(95);
- verifySetVariationValue(variationValue, 105);
+ verifySetValue(value, 105);
}
- private static void verifyUnsetVariationValue(IntValue variationValue) {
- assertThat(variationValue.isSet()).isFalse();
- assertThat(variationValue.getValue()).isZero();
+ private static void verifyUnsetValue(IntValue value) {
+ assertThat(value.isSet()).isFalse();
+ assertThat(value.getValue()).isZero();
}
- private static void verifySetVariationValue(IntValue variationValue, int expected) {
- assertThat(variationValue.isSet()).isTrue();
- assertThat(variationValue.getValue()).isEqualTo(expected);
+ private static void verifySetValue(IntValue value, int expected) {
+ assertThat(value.isSet()).isTrue();
+ assertThat(value.getValue()).isEqualTo(expected);
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/RatingValueTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/RatingValueTest.java
index b57c3e2bfe6..d9d6a929dcf 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/RatingValueTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/counter/RatingValueTest.java
@@ -32,22 +32,22 @@ public class RatingValueTest {
@Test
public void newly_created_value_is_unset_and_has_value_0() {
- verifyUnsetVariationValue(new RatingValue());
+ verifyUnsetValue(new RatingValue());
}
@Test
public void increment_sets_value_and_increments_value() {
- verifySetVariationValue(new RatingValue().increment(B), B);
+ verifySetValue(new RatingValue().increment(B), B);
}
@Test
public void increment_has_no_effect_if_arg_is_null() {
- verifyUnsetVariationValue(new RatingValue().increment((RatingValue) null));
+ verifyUnsetValue(new RatingValue().increment((RatingValue) null));
}
@Test
public void increment_has_no_effect_if_arg_is_unset() {
- verifyUnsetVariationValue(new RatingValue().increment(new RatingValue()));
+ verifyUnsetValue(new RatingValue().increment(new RatingValue()));
}
@Test
@@ -55,7 +55,7 @@ public class RatingValueTest {
RatingValue source = new RatingValue().increment(B);
RatingValue target = new RatingValue().increment(source);
- verifySetVariationValue(target, B);
+ verifySetValue(target, B);
}
@Test
@@ -64,7 +64,7 @@ public class RatingValueTest {
.increment(new RatingValue().increment(B))
.increment(new RatingValue().increment(D));
- verifySetVariationValue(target, D);
+ verifySetValue(target, D);
}
@Test
@@ -73,17 +73,17 @@ public class RatingValueTest {
.increment(B)
.increment(C);
- verifySetVariationValue(variationValue, C);
+ verifySetValue(variationValue, C);
}
- private static void verifyUnsetVariationValue(RatingValue variationValue) {
- assertThat(variationValue.isSet()).isFalse();
- assertThat(variationValue.getValue()).isEqualTo(A);
+ private static void verifyUnsetValue(RatingValue ratingValue) {
+ assertThat(ratingValue.isSet()).isFalse();
+ assertThat(ratingValue.getValue()).isEqualTo(A);
}
- private static void verifySetVariationValue(RatingValue variationValue, Rating expected) {
- assertThat(variationValue.isSet()).isTrue();
- assertThat(variationValue.getValue()).isEqualTo(expected);
+ private static void verifySetValue(RatingValue ratingValue, Rating expected) {
+ assertThat(ratingValue.isSet()).isTrue();
+ assertThat(ratingValue.getValue()).isEqualTo(expected);
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtilsTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtilsTest.java
index 15631b50117..9af01ffcb7b 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtilsTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/formula/coverage/CoverageUtilsTest.java
@@ -34,7 +34,6 @@ import static com.google.common.base.Preconditions.checkState;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.sonar.ce.task.projectanalysis.formula.coverage.CoverageUtils.getLongMeasureValue;
-import static org.sonar.ce.task.projectanalysis.formula.coverage.CoverageUtils.getMeasureVariations;
import static org.sonar.ce.task.projectanalysis.measure.Measure.newMeasureBuilder;
public class CoverageUtilsTest {
@@ -86,25 +85,6 @@ public class CoverageUtilsTest {
.hasMessage("value can not be converted to long because current value type is a DOUBLE");
}
- @Test
- public void getMeasureVariations_returns_0_in_all_MeasureVariations_if_there_is_no_measure() {
- assertThat(getMeasureVariations(fileAggregateContext, SOME_METRIC_KEY)).isEqualTo(DEFAULT_VARIATION);
- }
-
- @Test
- public void getMeasureVariations_returns_0_in_all_MeasureVariations_if_there_is_measure_has_no_variations() {
- fileAggregateContext.put(SOME_METRIC_KEY, newMeasureBuilder().createNoValue());
-
- assertThat(getMeasureVariations(fileAggregateContext, SOME_METRIC_KEY)).isEqualTo(DEFAULT_VARIATION);
- }
-
- @Test
- public void getMeasureVariations_returns_MeasureVariations_of_measure_when_it_has_one() {
- fileAggregateContext.put(SOME_METRIC_KEY, newMeasureBuilder().setVariation(5d).createNoValue());
-
- assertThat(getMeasureVariations(fileAggregateContext, SOME_METRIC_KEY)).isEqualTo(5d);
- }
-
private static class CounterInitializationContextRule extends ExternalResource implements CounterInitializationContext {
private final Map<String, Measure> measures = new HashMap<>();
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueCounterTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueCounterTest.java
index 77ccd9f620a..2646cfd3157 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueCounterTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/IssueCounterTest.java
@@ -34,7 +34,6 @@ import org.sonar.ce.task.projectanalysis.component.TreeRootHolderRule;
import org.sonar.ce.task.projectanalysis.measure.MeasureRepoEntry;
import org.sonar.ce.task.projectanalysis.measure.MeasureRepositoryRule;
import org.sonar.ce.task.projectanalysis.metric.MetricRepositoryRule;
-import org.sonar.ce.task.projectanalysis.period.Period;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.db.rule.RuleTesting;
@@ -284,9 +283,9 @@ public class IssueCounterTest {
underTest.beforeComponent(PROJECT);
underTest.afterComponent(PROJECT);
- assertVariations(FILE1, entry(NEW_VIOLATIONS_KEY, 2), entry(NEW_CRITICAL_VIOLATIONS_KEY, 2), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
+ assertValues(FILE1, entry(NEW_VIOLATIONS_KEY, 2), entry(NEW_CRITICAL_VIOLATIONS_KEY, 2), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
entry(NEW_CODE_SMELLS_KEY, 1), entry(NEW_BUGS_KEY, 1), entry(NEW_VULNERABILITIES_KEY, 0), entry(NEW_SECURITY_HOTSPOTS_KEY, 1));
- assertVariations(PROJECT, entry(NEW_VIOLATIONS_KEY, 2), entry(NEW_CRITICAL_VIOLATIONS_KEY, 2), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
+ assertValues(PROJECT, entry(NEW_VIOLATIONS_KEY, 2), entry(NEW_CRITICAL_VIOLATIONS_KEY, 2), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
entry(NEW_CODE_SMELLS_KEY, 1), entry(NEW_BUGS_KEY, 1), entry(NEW_VULNERABILITIES_KEY, 0), entry(NEW_SECURITY_HOTSPOTS_KEY, 1));
}
@@ -339,18 +338,17 @@ public class IssueCounterTest {
underTest.beforeComponent(PROJECT);
underTest.afterComponent(PROJECT);
- assertVariations(FILE1, entry(NEW_VIOLATIONS_KEY, 0), entry(NEW_CRITICAL_VIOLATIONS_KEY, 0), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
+ assertValues(FILE1, entry(NEW_VIOLATIONS_KEY, 0), entry(NEW_CRITICAL_VIOLATIONS_KEY, 0), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
entry(NEW_VULNERABILITIES_KEY, 0));
- assertVariations(PROJECT, entry(NEW_VIOLATIONS_KEY, 0), entry(NEW_CRITICAL_VIOLATIONS_KEY, 0), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
+ assertValues(PROJECT, entry(NEW_VIOLATIONS_KEY, 0), entry(NEW_CRITICAL_VIOLATIONS_KEY, 0), entry(NEW_BLOCKER_VIOLATIONS_KEY, 0), entry(NEW_MAJOR_VIOLATIONS_KEY, 0),
entry(NEW_VULNERABILITIES_KEY, 0));
}
@SafeVarargs
- private final void assertVariations(Component componentRef, MapEntry<String, Integer>... entries) {
+ private final void assertValues(Component componentRef, MapEntry<String, Integer>... entries) {
assertThat(measureRepository.getRawMeasures(componentRef).entrySet()
.stream()
- .filter(e -> e.getValue().hasVariation())
- .map(e -> entry(e.getKey(), (int) e.getValue().getVariation())))
+ .map(e -> entry(e.getKey(), e.getValue().getIntValue())))
.contains(entries);
}
@@ -392,9 +390,4 @@ public class IssueCounterTest {
private DefaultIssue createNewSecurityHotspot() {
return createNewIssue(null, STATUS_OPEN, "MAJOR", RuleType.SECURITY_HOTSPOT);
}
-
- private static Period newPeriod(long date) {
- return new Period("mode", null, date);
- }
-
}
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 9e94cf41e28..3aeb72fda96 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
@@ -85,7 +85,7 @@ public class NewEffortAggregatorTest {
underTest.onIssue(FILE, resolved);
underTest.afterComponent(FILE);
- assertVariation(FILE, NEW_TECHNICAL_DEBT_KEY, 10 + 30);
+ assertValue(FILE, NEW_TECHNICAL_DEBT_KEY, 10 + 30);
}
@Test
@@ -110,7 +110,7 @@ public class NewEffortAggregatorTest {
underTest.afterComponent(FILE);
// Only effort of CODE SMELL issue is used
- assertVariation(FILE, NEW_TECHNICAL_DEBT_KEY, 10);
+ assertValue(FILE, NEW_TECHNICAL_DEBT_KEY, 10);
}
@Test
@@ -134,7 +134,7 @@ public class NewEffortAggregatorTest {
underTest.onIssue(FILE, resolved);
underTest.afterComponent(FILE);
- assertVariation(FILE, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 10 + 30);
+ assertValue(FILE, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 10 + 30);
}
@Test
@@ -159,7 +159,7 @@ public class NewEffortAggregatorTest {
underTest.afterComponent(FILE);
// Only effort of BUG issue is used
- assertVariation(FILE, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 15);
+ assertValue(FILE, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 15);
}
@Test
@@ -183,7 +183,7 @@ public class NewEffortAggregatorTest {
underTest.onIssue(FILE, oldResolved);
underTest.afterComponent(FILE);
- assertVariation(FILE, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 10 + 30);
+ assertValue(FILE, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 10 + 30);
}
@Test
@@ -208,7 +208,7 @@ public class NewEffortAggregatorTest {
underTest.afterComponent(FILE);
// Only effort of VULNERABILITY issue is used
- assertVariation(FILE, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 12);
+ assertValue(FILE, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 12);
}
@Test
@@ -247,9 +247,9 @@ public class NewEffortAggregatorTest {
underTest.onIssue(PROJECT, oldVulnerabilityProjectIssue);
underTest.afterComponent(PROJECT);
- assertVariation(PROJECT, NEW_TECHNICAL_DEBT_KEY, 10 + 30);
- assertVariation(PROJECT, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 8 + 28);
- assertVariation(PROJECT, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 12 + 32);
+ assertValue(PROJECT, NEW_TECHNICAL_DEBT_KEY, 10 + 30);
+ assertValue(PROJECT, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 8 + 28);
+ assertValue(PROJECT, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 12 + 32);
}
@Test
@@ -275,15 +275,14 @@ public class NewEffortAggregatorTest {
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);
+ assertValue(FILE, NEW_TECHNICAL_DEBT_KEY, 0);
+ assertValue(FILE, NEW_RELIABILITY_REMEDIATION_EFFORT_KEY, 0);
+ assertValue(FILE, NEW_SECURITY_REMEDIATION_EFFORT_KEY, 0);
}
- private void assertVariation(Component component, String metricKey, int variation) {
+ private void assertValue(Component component, String metricKey, int value) {
Measure newMeasure = measureRepository.getRawMeasure(component, metricRepository.getByKey(metricKey)).get();
- assertThat(newMeasure.getVariation()).isEqualTo(variation);
- assertThat(newMeasure.getValueType()).isEqualTo(Measure.ValueType.NO_VALUE);
+ assertThat(newMeasure.getLongValue()).isEqualTo(value);
}
private DefaultIssue newCodeSmellIssue(long effort) {
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimizationTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimizationTest.java
index affc1e194d3..f0b8d25cbd8 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimizationTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/BestValueOptimizationTest.java
@@ -38,28 +38,13 @@ public class BestValueOptimizationTest {
private static final String SOME_DATA = "some_data";
private static final MetricImpl METRIC_BOOLEAN_FALSE = createMetric(Metric.MetricType.BOOL, 6d);
private static final MetricImpl METRIC_BOOLEAN_TRUE = createMetric(Metric.MetricType.BOOL, 1d);
- private static final double SOME_EMPTY_VARIATIONS = 0d;
-
- private static Measure.NewMeasureBuilder[] builders_of_non_bestValueOptimized_measures() {
- QualityGateStatus someQualityGateStatus = new QualityGateStatus(Measure.Level.ERROR, null);
- double someVariations = 2d;
- return new Measure.NewMeasureBuilder[] {
- newMeasureBuilder().setQualityGateStatus(someQualityGateStatus),
- newMeasureBuilder().setQualityGateStatus(someQualityGateStatus).setVariation(someVariations),
- newMeasureBuilder().setVariation(someVariations),
- newMeasureBuilder().setQualityGateStatus(someQualityGateStatus),
- newMeasureBuilder().setQualityGateStatus(someQualityGateStatus).setVariation(someVariations),
- };
- }
@Test
public void apply_returns_true_for_value_true_for_Boolean_Metric_and_best_value_1() {
Predicate<Measure> underTest = BestValueOptimization.from(METRIC_BOOLEAN_TRUE, FILE_COMPONENT);
assertThat(underTest.test(newMeasureBuilder().create(true))).isTrue();
- assertThat(underTest.test(newMeasureBuilder().setVariation(SOME_EMPTY_VARIATIONS).create(true))).isTrue();
assertThat(underTest.test(newMeasureBuilder().create(false))).isFalse();
- assertThat(underTest.test(newMeasureBuilder().setVariation(SOME_EMPTY_VARIATIONS).create(false))).isFalse();
}
@Test
@@ -74,10 +59,9 @@ public class BestValueOptimizationTest {
public void apply_returns_false_if_measure_has_anything_else_than_value_for_Boolean_Metric_and_best_value_1() {
Predicate<Measure> underTest = BestValueOptimization.from(METRIC_BOOLEAN_TRUE, FILE_COMPONENT);
- for (Measure.NewMeasureBuilder builder : builders_of_non_bestValueOptimized_measures()) {
- assertThat(underTest.test(builder.create(true))).isFalse();
- assertThat(underTest.test(builder.create(false))).isFalse();
- }
+ Measure.NewMeasureBuilder builder = newMeasureBuilder().setQualityGateStatus(new QualityGateStatus(Measure.Level.ERROR, null));
+ assertThat(underTest.test(builder.create(true))).isFalse();
+ assertThat(underTest.test(builder.create(false))).isFalse();
}
@Test
@@ -94,7 +78,6 @@ public class BestValueOptimizationTest {
assertThat(underTest.test(newMeasureBuilder().create(true))).isFalse();
assertThat(underTest.test(newMeasureBuilder().create(false))).isTrue();
- assertThat(underTest.test(newMeasureBuilder().setVariation(SOME_EMPTY_VARIATIONS).create(false))).isTrue();
}
@Test
@@ -109,10 +92,9 @@ public class BestValueOptimizationTest {
public void apply_returns_false_if_measure_has_anything_else_than_value_for_Boolean_Metric_and_best_value_not_1() {
Predicate<Measure> underTest = BestValueOptimization.from(METRIC_BOOLEAN_FALSE, FILE_COMPONENT);
- for (Measure.NewMeasureBuilder builder : builders_of_non_bestValueOptimized_measures()) {
- assertThat(underTest.test(builder.create(true))).isFalse();
- assertThat(underTest.test(builder.create(false))).isFalse();
- }
+ Measure.NewMeasureBuilder builder = newMeasureBuilder().setQualityGateStatus(new QualityGateStatus(Measure.Level.ERROR, null));
+ assertThat(underTest.test(builder.create(true))).isFalse();
+ assertThat(underTest.test(builder.create(false))).isFalse();
}
@Test
@@ -128,7 +110,6 @@ public class BestValueOptimizationTest {
Predicate<Measure> underTest = BestValueOptimization.from(createMetric(Metric.MetricType.INT, 10), FILE_COMPONENT);
assertThat(underTest.test(newMeasureBuilder().create(10))).isTrue();
- assertThat(underTest.test(newMeasureBuilder().setVariation(SOME_EMPTY_VARIATIONS).create(10))).isTrue();
assertThat(underTest.test(newMeasureBuilder().create(11))).isFalse();
}
@@ -137,7 +118,6 @@ public class BestValueOptimizationTest {
Predicate<Measure> underTest = BestValueOptimization.from(createMetric(Metric.MetricType.WORK_DUR, 9511L), FILE_COMPONENT);
assertThat(underTest.test(newMeasureBuilder().create(9511L))).isTrue();
- assertThat(underTest.test(newMeasureBuilder().setVariation(SOME_EMPTY_VARIATIONS).create(9511L))).isTrue();
assertThat(underTest.test(newMeasureBuilder().create(963L))).isFalse();
}
@@ -146,9 +126,7 @@ public class BestValueOptimizationTest {
Predicate<Measure> underTest = BestValueOptimization.from(createMetric(Metric.MetricType.RATING, A.getIndex()), FILE_COMPONENT);
assertThat(underTest.test(newMeasureBuilder().create(A.getIndex()))).isTrue();
- assertThat(underTest.test(newMeasureBuilder().setVariation(A.getIndex()).createNoValue())).isTrue();
assertThat(underTest.test(newMeasureBuilder().create(B.getIndex()))).isFalse();
- assertThat(underTest.test(newMeasureBuilder().setVariation(B.getIndex()).createNoValue())).isFalse();
}
@Test
@@ -156,7 +134,6 @@ public class BestValueOptimizationTest {
Predicate<Measure> underTest = BestValueOptimization.from(createMetric(Metric.MetricType.FLOAT, 36.5d), FILE_COMPONENT);
assertThat(underTest.test(newMeasureBuilder().create(36.5d, 1))).isTrue();
- assertThat(underTest.test(newMeasureBuilder().setVariation(SOME_EMPTY_VARIATIONS).create(36.5d, 1))).isTrue();
assertThat(underTest.test(newMeasureBuilder().create(36.6d, 1))).isFalse();
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasureTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasureTest.java
index 1026bb9a684..9786ed4fc3c 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasureTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/LiveMeasureDtoToMeasureTest.java
@@ -19,9 +19,7 @@
*/
package org.sonar.ce.task.projectanalysis.measure;
-import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
-import com.tngtech.java.junit.dataprovider.UseDataProvider;
import java.util.Optional;
import org.assertj.core.data.Offset;
import org.junit.Test;
@@ -42,12 +40,8 @@ public class LiveMeasureDtoToMeasureTest {
private static final Metric SOME_STRING_METRIC = new MetricImpl("42", "string", "name", Metric.MetricType.STRING);
private static final Metric SOME_BOOLEAN_METRIC = new MetricImpl("42", "boolean", "name", Metric.MetricType.BOOL);
private static final Metric SOME_LEVEL_METRIC = new MetricImpl("42", "level", "name", Metric.MetricType.LEVEL);
-
- private static final String SOME_DATA = "some_data man!";
- private static final String SOME_ALERT_TEXT = "some alert text_be_careFul!";
private static final LiveMeasureDto EMPTY_MEASURE_DTO = new LiveMeasureDto();
-
private LiveMeasureDtoToMeasure underTest = new LiveMeasureDtoToMeasure();
@Test
@@ -190,41 +184,6 @@ public class LiveMeasureDtoToMeasureTest {
assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.NO_VALUE);
}
- @DataProvider
- public static Object[][] all_types_LiveMeasureDtos() {
- return new Object[][] {
- {new LiveMeasureDto().setValue(1d), SOME_BOOLEAN_METRIC},
- {new LiveMeasureDto().setValue(1d), SOME_INT_METRIC},
- {new LiveMeasureDto().setValue(1d), SOME_LONG_METRIC},
- {new LiveMeasureDto().setValue(1d), SOME_DOUBLE_METRIC},
- {new LiveMeasureDto().setData("1"), SOME_STRING_METRIC},
- {new LiveMeasureDto().setData(Level.OK.name()), SOME_LEVEL_METRIC}
- };
- }
-
- @Test
- @UseDataProvider("all_types_LiveMeasureDtos")
- public void toMeasure_creates_no_MeasureVariation_if_dto_has_none_whichever_the_ValueType(LiveMeasureDto LiveMeasureDto, Metric metric) {
- assertThat(underTest.toMeasure(LiveMeasureDto, metric).get().hasVariation()).isFalse();
- }
-
- @Test
- @UseDataProvider("all_types_LiveMeasureDtos")
- public void toMeasure_creates_MeasureVariation_and_maps_the_right_one(LiveMeasureDto builder, Metric metric) {
- assertThat(underTest.toMeasure(builder.setVariation(1d), metric).get().getVariation()).isOne();
- }
-
- @Test
- public void toMeasure_creates_MeasureVariation_and_maps_the_right_one() {
- LiveMeasureDto LiveMeasureDto = new LiveMeasureDto()
- .setData("1")
- .setVariation(2d);
-
- Optional<Measure> measure = underTest.toMeasure(LiveMeasureDto, SOME_STRING_METRIC);
-
- assertThat(measure.get().getVariation()).isEqualTo(2);
- }
-
@Test
public void toMeasure_should_not_loose_decimals_of_float_values() {
MetricImpl metric = new MetricImpl("42", "double", "name", Metric.MetricType.FLOAT, 5, null, false, false);
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasureTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasureTest.java
index 29156db000c..810eecc2312 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasureTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureDtoToMeasureTest.java
@@ -298,29 +298,6 @@ public class MeasureDtoToMeasureTest {
}
@Test
- @UseDataProvider("all_types_MeasureDtos")
- public void toMeasure_creates_no_MeasureVariation_if_dto_has_none_whichever_the_ValueType(MeasureDto measureDto, Metric metric) {
- assertThat(underTest.toMeasure(measureDto, metric).get().hasVariation()).isFalse();
- }
-
- @Test
- @UseDataProvider("all_types_MeasureDtos")
- public void toMeasure_creates_MeasureVariation_and_maps_the_right_one(MeasureDto builder, Metric metric) {
- assertThat(underTest.toMeasure(builder.setVariation(1d), metric).get().getVariation()).isOne();
- }
-
- @Test
- public void toMeasure_creates_MeasureVariation_and_maps_the_right_one() {
- MeasureDto measureDto = new MeasureDto()
- .setData("1")
- .setVariation(2d);
-
- Optional<Measure> measure = underTest.toMeasure(measureDto, SOME_STRING_METRIC);
-
- assertThat(measure.get().getVariation()).isEqualTo(2);
- }
-
- @Test
public void toMeasure_should_not_loose_decimals_of_float_values() {
MetricImpl metric = new MetricImpl("42", "double", "name", Metric.MetricType.FLOAT, 5, null, false, false);
MeasureDto measureDto = new MeasureDto()
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureTest.java
index cfb2b5f308e..9131d5122cd 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureTest.java
@@ -252,19 +252,12 @@ public class MeasureTest {
}
@Test
- public void updateMeasureBuilder_setVariations_throws_USO_if_measure_already_has_Variations() {
- assertThatThrownBy(() -> Measure.updatedMeasureBuilder(newMeasureBuilder().setVariation(1d).createNoValue()).setVariation(2d))
- .isInstanceOf(UnsupportedOperationException.class);
- }
-
- @Test
@UseDataProvider("all")
public void updateMeasureBuilder_creates_Measure_with_same_immutable_properties(Measure measure) {
Measure newMeasure = Measure.updatedMeasureBuilder(measure).create();
assertThat(newMeasure.getValueType()).isEqualTo(measure.getValueType());
assertThat(newMeasure.hasQualityGateStatus()).isEqualTo(measure.hasQualityGateStatus());
- assertThat(newMeasure.hasVariation()).isEqualTo(measure.hasVariation());
}
@Test
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDtoTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDtoTest.java
index 0a9158cb922..ca73796327a 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDtoTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/measure/MeasureToMeasureDtoTest.java
@@ -43,7 +43,6 @@ public class MeasureToMeasureDtoTest {
private static final MetricImpl SOME_METRIC = new MetricImpl("42", "metric_key", "metric_name", Metric.MetricType.STRING);
private static final String SOME_DATA = "some_data";
private static final String SOME_STRING = "some_string";
- private static final double SOME_VARIATIONS = 1d;
private static final MetricImpl SOME_BOOLEAN_METRIC = new MetricImpl("1", "1", "1", Metric.MetricType.BOOL);
private static final MetricImpl SOME_INT_METRIC = new MetricImpl("2", "2", "2", Metric.MetricType.INT);
private static final MetricImpl SOME_LONG_METRIC = new MetricImpl("3", "3", "3", Metric.MetricType.DISTRIB);
@@ -92,21 +91,6 @@ public class MeasureToMeasureDtoTest {
@Test
@UseDataProvider("all_types_Measures")
- public void toMeasureDto_returns_Dto_without_any_variation_if_Measure_has_no_MeasureVariations(Measure measure, Metric metric) {
- MeasureDto measureDto = underTest.toMeasureDto(measure, metric, SOME_COMPONENT);
-
- assertThat(measureDto.getVariation()).isNull();
- }
-
- @Test
- public void toMeasureDto_returns_Dto_with_variation_if_Measure_has_MeasureVariations() {
- MeasureDto measureDto = underTest.toMeasureDto(Measure.newMeasureBuilder().setVariation(SOME_VARIATIONS).create(SOME_STRING), SOME_STRING_METRIC, SOME_COMPONENT);
-
- assertThat(measureDto.getVariation()).isEqualTo(1d);
- }
-
- @Test
- @UseDataProvider("all_types_Measures")
public void toMeasureDto_returns_Dto_without_alertStatus_nor_alertText_if_Measure_has_no_QualityGateStatus(Measure measure, Metric metric) {
MeasureDto measureDto = underTest.toMeasureDto(measure, metric, SOME_COMPONENT);
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluatorTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluatorTest.java
index 1438d697713..853a5c3d5b6 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluatorTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitygate/ConditionEvaluatorTest.java
@@ -35,16 +35,15 @@ import static com.google.common.collect.FluentIterable.from;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.fail;
-import static org.sonar.ce.task.projectanalysis.measure.Measure.newMeasureBuilder;
import static org.sonar.ce.task.projectanalysis.measure.Measure.Level.ERROR;
import static org.sonar.ce.task.projectanalysis.measure.Measure.Level.OK;
+import static org.sonar.ce.task.projectanalysis.measure.Measure.newMeasureBuilder;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.BOOL;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.DATA;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.DISTRIB;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.FLOAT;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.INT;
-import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.LEVEL;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.PERCENT;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.RATING;
import static org.sonar.ce.task.projectanalysis.metric.Metric.MetricType.STRING;
@@ -159,44 +158,6 @@ public class ConditionEvaluatorTest {
}
@Test
- @UseDataProvider("numericNewMetricTypes")
- public void test_condition_on_numeric_new_metric(MetricType metricType) {
- Metric metric = createNewMetric(metricType);
- Measure measure = newMeasureBuilder().setVariation(3d).createNoValue();
-
- assertThat(underTest.evaluate(new Condition(metric, GREATER_THAN.getDbValue(), "3"), measure)).hasLevel(OK);
- assertThat(underTest.evaluate(new Condition(metric, GREATER_THAN.getDbValue(), "2"), measure)).hasLevel(ERROR);
- }
-
- @Test
- @UseDataProvider("numericNewMetricTypes")
- public void condition_on_new_metric_without_value_is_OK(MetricType metricType) {
- Metric metric = createNewMetric(metricType);
- Measure measure = newMeasureBuilder().createNoValue();
-
- assertThat(underTest.evaluate(new Condition(metric, GREATER_THAN.getDbValue(), "3"), measure)).hasLevel(OK).hasValue(null);
- }
-
- @DataProvider
- public static Object[][] numericNewMetricTypes() {
- return new Object[][] {
- {FLOAT},
- {INT},
- {WORK_DUR},
- };
- }
-
- @Test
- public void fail_when_condition_on_leak_period_is_using_unsupported_metric() {
- Metric metric = createNewMetric(LEVEL);
- Measure measure = newMeasureBuilder().setVariation(0d).createNoValue();
-
- assertThatThrownBy(() -> underTest.evaluate(new Condition(metric, LESS_THAN.getDbValue(), "3"), measure))
- .isInstanceOf(IllegalArgumentException.class)
- .hasMessage("Unsupported metric type LEVEL");
- }
-
- @Test
public void test_condition_on_rating() {
Metric metric = createMetric(RATING);
Measure measure = newMeasureBuilder().create(4, "D");
@@ -212,8 +173,4 @@ public class ConditionEvaluatorTest {
private static MetricImpl createMetric(MetricType metricType) {
return new MetricImpl("1", "key", "name", metricType);
}
-
- private static MetricImpl createNewMetric(MetricType metricType) {
- return new MetricImpl("1", "new_key", "name", metricType);
- }
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitorTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitorTest.java
index bd54b6c5353..75a5d5f26b7 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitorTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitorTest.java
@@ -64,7 +64,7 @@ import static org.sonar.ce.task.projectanalysis.measure.MeasureAssert.assertThat
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.D;
-public class NewMaintainabilityMeasuresVisitorTest {
+public class NewMaintainabilityMeasuresVisitorTest {
private static final double[] RATING_GRID = new double[] {0.1, 0.2, 0.5, 1};
@@ -72,7 +72,7 @@ public class NewMaintainabilityMeasuresVisitorTest {
private static final long LANGUAGE_1_DEV_COST = 30L;
private static final int ROOT_REF = 1;
private static final int LANGUAGE_1_FILE_REF = 11111;
- private static final Offset<Double> VARIATION_COMPARISON_OFFSET = Offset.offset(0.01);
+ private static final Offset<Double> VALUE_COMPARISON_OFFSET = Offset.offset(0.01);
@Rule
public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule();
@@ -422,8 +422,8 @@ public class NewMaintainabilityMeasuresVisitorTest {
return ReportComponent.builder(type, ref).setKey(String.valueOf(ref));
}
- private Measure createNewDebtMeasure(double variation) {
- return newMeasureBuilder().setVariation(variation).createNoValue();
+ private Measure createNewDebtMeasure(long value) {
+ return newMeasureBuilder().create(value);
}
private static Measure createNclocDataMeasure(Integer... nclocLines) {
@@ -449,16 +449,16 @@ public class NewMaintainabilityMeasuresVisitorTest {
.isAbsent();
}
- private void assertNewDebtRatioValues(int componentRef, double expectedVariation) {
- assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SQALE_DEBT_RATIO_KEY)).hasVariation(expectedVariation, VARIATION_COMPARISON_OFFSET);
+ private void assertNewDebtRatioValues(int componentRef, double expectedValue) {
+ assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SQALE_DEBT_RATIO_KEY)).hasValue(expectedValue, VALUE_COMPARISON_OFFSET);
}
- private void assertNewDevelopmentCostValues(int componentRef, long expectedVariation) {
- assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_DEVELOPMENT_COST_KEY)).hasVariation(expectedVariation, VARIATION_COMPARISON_OFFSET);
+ private void assertNewDevelopmentCostValues(int componentRef, float expectedValue) {
+ assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_DEVELOPMENT_COST_KEY)).hasValue(expectedValue, VALUE_COMPARISON_OFFSET);
}
- private void assertNewMaintainability(int componentRef, Rating expectedVariation) {
- assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_MAINTAINABILITY_RATING_KEY)).hasVariation(expectedVariation.getIndex());
+ private void assertNewMaintainability(int componentRef, Rating expectedValue) {
+ assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_MAINTAINABILITY_RATING_KEY)).hasValue(expectedValue.getIndex());
}
private void assertNoNewMaintainability(int componentRef) {
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitorTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitorTest.java
index ced065021fc..259d5377aed 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitorTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitorTest.java
@@ -322,8 +322,7 @@ public class NewReliabilityAndSecurityRatingMeasuresVisitorTest {
}
private void verifyAddedRawMeasureOnLeakPeriod(int componentRef, String metricKey, Rating rating) {
- MeasureAssert.assertThat(measureRepository.getAddedRawMeasure(componentRef, metricKey))
- .hasVariation(rating.getIndex());
+ MeasureAssert.assertThat(measureRepository.getAddedRawMeasure(componentRef, metricKey)).hasValue(rating.getIndex());
}
private DefaultIssue newBugIssue(long effort, String severity) {
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitorTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitorTest.java
index 292e73edd61..174e056486a 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitorTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/qualitymodel/NewSecurityReviewMeasuresVisitorTest.java
@@ -70,7 +70,7 @@ import static org.sonar.server.measure.Rating.D;
import static org.sonar.server.measure.Rating.E;
public class NewSecurityReviewMeasuresVisitorTest {
- private static final Offset<Double> VARIATION_COMPARISON_OFFSET = Offset.offset(0.01);
+ private static final Offset<Double> VALUE_COMPARISON_OFFSET = Offset.offset(0.01);
private static final String LANGUAGE_KEY_1 = "lKey1";
private static final int PROJECT_REF = 1;
@@ -341,10 +341,10 @@ public class NewSecurityReviewMeasuresVisitorTest {
}
private void verifyRatingAndReviewedMeasures(int componentRef, Rating expectedReviewRating, @Nullable Double expectedHotspotsReviewed) {
- assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_REVIEW_RATING_KEY)).hasVariation(expectedReviewRating.getIndex());
+ assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_REVIEW_RATING_KEY)).hasValue(expectedReviewRating.getIndex());
if (expectedHotspotsReviewed != null) {
- assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_REVIEWED_KEY)).hasVariation(expectedHotspotsReviewed,
- VARIATION_COMPARISON_OFFSET);
+ assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_REVIEWED_KEY)).hasValue(expectedHotspotsReviewed,
+ VALUE_COMPARISON_OFFSET);
} else {
assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_REVIEWED_KEY)).isAbsent();
}
@@ -354,12 +354,12 @@ public class NewSecurityReviewMeasuresVisitorTest {
if (hotspotsReviewed == null) {
Assertions.assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_REVIEWED_STATUS_KEY)).isEmpty();
} else {
- assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_REVIEWED_STATUS_KEY)).hasVariation(hotspotsReviewed);
+ assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_REVIEWED_STATUS_KEY)).hasValue(hotspotsReviewed);
}
if (hotspotsReviewed == null) {
Assertions.assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_TO_REVIEW_STATUS_KEY)).isEmpty();
} else {
- assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_TO_REVIEW_STATUS_KEY)).hasVariation(hotspotsToReview);
+ assertThat(measureRepository.getAddedRawMeasure(componentRef, NEW_SECURITY_HOTSPOTS_TO_REVIEW_STATUS_KEY)).hasValue(hotspotsToReview);
}
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStepTest.java
index e2f16909b0c..f0599de2bfa 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewCoverageMeasuresStepTest.java
@@ -179,10 +179,10 @@ public class NewCoverageMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_COMPONENT.getReportAttributes().getRef()))).contains(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(2d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(1d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(0d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(0d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(2)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(1)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(0)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(0)));
}
@Test
@@ -204,36 +204,36 @@ public class NewCoverageMeasuresStepTest {
// files
assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_1_REF))).contains(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(3d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(7d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(4d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(3)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(7)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(4)));
assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_2_REF))).contains(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(4d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(27d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(14d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(4)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(27)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(14)));
assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_3_REF))).contains(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(2d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(17d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(9d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(2)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(17)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(9)));
// directories
assertThat(toEntries(measureRepository.getAddedRawMeasures(DIRECTORY_1_REF))).contains(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(3d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(7d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(4d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(3)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(7)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(4)));
assertThat(toEntries(measureRepository.getAddedRawMeasures(DIRECTORY_2_REF))).contains(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(10d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(6d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(44d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(23d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(10)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(6)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(44)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(23)));
// submodule
- MeasureRepoEntry[] repoEntriesFromProject = {entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(15d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(9d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(51d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(27d))};
+ MeasureRepoEntry[] repoEntriesFromProject = {entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(15)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(9)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(51)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(27))};
// project
assertThat(toEntries(measureRepository.getAddedRawMeasures(ROOT_REF))).contains(repoEntriesFromProject);
}
@@ -266,15 +266,15 @@ public class NewCoverageMeasuresStepTest {
private void verify_aggregates_variations(LinesAndConditionsWithUncoveredMetricKeys metricKeys, String codeCoverageKey, String lineCoverageKey, String branchCoverageKey) {
treeRootHolder.setRoot(MULTIPLE_FILES_TREE);
measureRepository
- .addRawMeasure(FILE_1_REF, metricKeys.getLines(), createMeasure(3000d))
- .addRawMeasure(FILE_1_REF, metricKeys.getConditions(), createMeasure(300d))
- .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredLines(), createMeasure(30d))
- .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredConditions(), createMeasure(9d))
+ .addRawMeasure(FILE_1_REF, metricKeys.getLines(), createMeasure(3000))
+ .addRawMeasure(FILE_1_REF, metricKeys.getConditions(), createMeasure(300))
+ .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredLines(), createMeasure(30))
+ .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredConditions(), createMeasure(9))
- .addRawMeasure(FILE_2_REF, metricKeys.getLines(), createMeasure(2000d))
- .addRawMeasure(FILE_2_REF, metricKeys.getConditions(), createMeasure(400d))
- .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredLines(), createMeasure(200d))
- .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredConditions(), createMeasure(16d));
+ .addRawMeasure(FILE_2_REF, metricKeys.getLines(), createMeasure(2000))
+ .addRawMeasure(FILE_2_REF, metricKeys.getConditions(), createMeasure(400))
+ .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredLines(), createMeasure(200))
+ .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredConditions(), createMeasure(16));
underTest.execute(new TestComputationStepContext());
@@ -309,10 +309,10 @@ public class NewCoverageMeasuresStepTest {
private void verify_only_zero_measures_on_new_lines_and_conditions_measures(Component component) {
assertThat(toEntries(measureRepository.getAddedRawMeasures(component.getReportAttributes().getRef()))).containsOnly(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(0d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(0d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(0d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(0d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(0)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(0)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(0)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(0)));
}
private static final class LineCoverageValues {
@@ -334,16 +334,18 @@ public class NewCoverageMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_COMPONENT.getReportAttributes().getRef()))).contains(
- entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5d)),
- entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(3d)),
- entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(7d)),
- entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(4d)));
+ entryOf(NEW_LINES_TO_COVER_KEY, createMeasure(5)),
+ entryOf(NEW_UNCOVERED_LINES_KEY, createMeasure(3)),
+ entryOf(NEW_CONDITIONS_TO_COVER_KEY, createMeasure(7)),
+ entryOf(NEW_UNCOVERED_CONDITIONS_KEY, createMeasure(4)));
}
- private static Measure createMeasure(Double expectedVariation) {
- return newMeasureBuilder()
- .setVariation(expectedVariation)
- .createNoValue();
+ private static Measure createMeasure(int expectedValue) {
+ return newMeasureBuilder().create(expectedValue);
+ }
+
+ private static Measure createMeasure(double expectedValue) {
+ return newMeasureBuilder().create(expectedValue);
}
private void setNewLines(Component c, Integer... lines) {
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStepTest.java
index 48ec1d6df0b..62d518e53b2 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/NewSizeMeasuresStepTest.java
@@ -103,13 +103,13 @@ public class NewSizeMeasuresStepTest {
setNewLines(FILE_1, FILE_2, FILE_4);
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_LINES_KEY, 11);
- assertRawMeasureValueOnPeriod(FILE_2_REF, NEW_LINES_KEY, 11);
+ assertRawMeasureValue(FILE_1_REF, NEW_LINES_KEY, 11);
+ assertRawMeasureValue(FILE_2_REF, NEW_LINES_KEY, 11);
assertNoRawMeasure(FILE_3_REF, NEW_LINES_KEY);
- assertRawMeasureValueOnPeriod(FILE_4_REF, NEW_LINES_KEY, 11);
- assertRawMeasureValueOnPeriod(DIRECTORY_REF, NEW_LINES_KEY, 22);
+ assertRawMeasureValue(FILE_4_REF, NEW_LINES_KEY, 11);
+ assertRawMeasureValue(DIRECTORY_REF, NEW_LINES_KEY, 22);
assertNoRawMeasure(DIRECTORY_2_REF, NEW_LINES_KEY);
- assertRawMeasureValueOnPeriod(ROOT_REF, NEW_LINES_KEY, 33);
+ assertRawMeasureValue(ROOT_REF, NEW_LINES_KEY, 33);
}
@Test
@@ -118,13 +118,13 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_LINES_KEY, 2);
- assertRawMeasureValueOnPeriod(FILE_2_REF, NEW_LINES_KEY, 2);
+ assertRawMeasureValue(FILE_1_REF, NEW_LINES_KEY, 2);
+ assertRawMeasureValue(FILE_2_REF, NEW_LINES_KEY, 2);
assertNoRawMeasure(FILE_3_REF, NEW_LINES_KEY);
- assertRawMeasureValueOnPeriod(FILE_4_REF, NEW_LINES_KEY, 2);
- assertRawMeasureValueOnPeriod(DIRECTORY_REF, NEW_LINES_KEY, 4);
+ assertRawMeasureValue(FILE_4_REF, NEW_LINES_KEY, 2);
+ assertRawMeasureValue(DIRECTORY_REF, NEW_LINES_KEY, 4);
assertNoRawMeasure(DIRECTORY_2_REF, NEW_LINES_KEY);
- assertRawMeasureValueOnPeriod(ROOT_REF, NEW_LINES_KEY, 6);
+ assertRawMeasureValue(ROOT_REF, NEW_LINES_KEY, 6);
}
@Test
@@ -141,7 +141,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 2d);
+ assertRawMeasureValue(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 2);
}
@Test
@@ -152,7 +152,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 1d);
+ assertRawMeasureValue(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 1);
}
@Test
@@ -163,7 +163,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 1d);
+ assertRawMeasureValue(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 1);
}
@Test
@@ -174,7 +174,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 6d);
+ assertRawMeasureValue(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 6);
}
@Test
@@ -186,7 +186,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 11d);
+ assertRawMeasureValue(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 11);
}
@Test
@@ -198,13 +198,13 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 2d);
- assertRawMeasureValueOnPeriod(FILE_2_REF, NEW_DUPLICATED_LINES_KEY, 0d);
- assertRawMeasureValueOnPeriod(FILE_3_REF, NEW_DUPLICATED_LINES_KEY, 9d);
- assertRawMeasureValueOnPeriod(FILE_4_REF, NEW_DUPLICATED_LINES_KEY, 11d);
- assertRawMeasureValueOnPeriod(DIRECTORY_REF, NEW_DUPLICATED_LINES_KEY, 2d);
+ assertRawMeasureValue(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 2);
+ assertRawMeasureValue(FILE_2_REF, NEW_DUPLICATED_LINES_KEY, 0);
+ assertRawMeasureValue(FILE_3_REF, NEW_DUPLICATED_LINES_KEY, 9);
+ assertRawMeasureValue(FILE_4_REF, NEW_DUPLICATED_LINES_KEY, 11);
+ assertRawMeasureValue(DIRECTORY_REF, NEW_DUPLICATED_LINES_KEY, 2);
assertNoRawMeasure(DIRECTORY_2_REF, NEW_DUPLICATED_LINES_KEY);
- assertRawMeasureValueOnPeriod(ROOT_REF, NEW_DUPLICATED_LINES_KEY, 22d);
+ assertRawMeasureValue(ROOT_REF, NEW_DUPLICATED_LINES_KEY, 22);
}
@Test
@@ -217,13 +217,13 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 2d);
- assertRawMeasureValueOnPeriod(FILE_2_REF, NEW_DUPLICATED_LINES_KEY, 0d);
- assertRawMeasureValueOnPeriod(FILE_3_REF, NEW_DUPLICATED_LINES_KEY, 2d);
- assertRawMeasureValueOnPeriod(FILE_4_REF, NEW_DUPLICATED_LINES_KEY, 2d);
- assertRawMeasureValueOnPeriod(DIRECTORY_REF, NEW_DUPLICATED_LINES_KEY, 2d);
+ assertRawMeasureValue(FILE_1_REF, NEW_DUPLICATED_LINES_KEY, 2);
+ assertRawMeasureValue(FILE_2_REF, NEW_DUPLICATED_LINES_KEY, 0);
+ assertRawMeasureValue(FILE_3_REF, NEW_DUPLICATED_LINES_KEY, 2);
+ assertRawMeasureValue(FILE_4_REF, NEW_DUPLICATED_LINES_KEY, 2);
+ assertRawMeasureValue(DIRECTORY_REF, NEW_DUPLICATED_LINES_KEY, 2);
assertNoRawMeasure(DIRECTORY_2_REF, NEW_DUPLICATED_LINES_KEY);
- assertRawMeasureValueOnPeriod(ROOT_REF, NEW_DUPLICATED_LINES_KEY, 6d);
+ assertRawMeasureValue(ROOT_REF, NEW_DUPLICATED_LINES_KEY, 6);
}
@Test
@@ -243,7 +243,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 4);
+ assertRawMeasureValue(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 4);
}
@Test
@@ -254,7 +254,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 4);
+ assertRawMeasureValue(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 4);
}
@Test
@@ -264,7 +264,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 1);
+ assertRawMeasureValue(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 1);
}
@Test
@@ -274,7 +274,7 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 1);
+ assertRawMeasureValue(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 1);
}
@Test
@@ -286,12 +286,12 @@ public class NewSizeMeasuresStepTest {
underTest.execute(new TestComputationStepContext());
- assertRawMeasureValueOnPeriod(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 10);
- assertRawMeasureValueOnPeriod(FILE_2_REF, NEW_BLOCKS_DUPLICATED_KEY, 2);
- assertRawMeasureValueOnPeriod(FILE_3_REF, NEW_BLOCKS_DUPLICATED_KEY, 0);
- assertRawMeasureValueOnPeriod(FILE_4_REF, NEW_BLOCKS_DUPLICATED_KEY, 6);
- assertRawMeasureValueOnPeriod(DIRECTORY_REF, NEW_BLOCKS_DUPLICATED_KEY, 12);
- assertRawMeasureValueOnPeriod(ROOT_REF, NEW_BLOCKS_DUPLICATED_KEY, 18);
+ assertRawMeasureValue(FILE_1_REF, NEW_BLOCKS_DUPLICATED_KEY, 10);
+ assertRawMeasureValue(FILE_2_REF, NEW_BLOCKS_DUPLICATED_KEY, 2);
+ assertRawMeasureValue(FILE_3_REF, NEW_BLOCKS_DUPLICATED_KEY, 0);
+ assertRawMeasureValue(FILE_4_REF, NEW_BLOCKS_DUPLICATED_KEY, 6);
+ assertRawMeasureValue(DIRECTORY_REF, NEW_BLOCKS_DUPLICATED_KEY, 12);
+ assertRawMeasureValue(ROOT_REF, NEW_BLOCKS_DUPLICATED_KEY, 18);
}
@Test
@@ -358,22 +358,23 @@ public class NewSizeMeasuresStepTest {
}
}
- private void assertRawMeasureValueOnPeriod(int componentRef, String metricKey, double expectedVariation) {
- assertRawMeasureValue(componentRef, metricKey, expectedVariation);
+ private void assertRawMeasureValue(int componentRef, String metricKey, int expectedValue) {
+ int value = measureRepository.getAddedRawMeasure(componentRef, metricKey).get().getIntValue();
+ assertThat(value).isEqualTo(expectedValue);
}
- private void assertRawMeasureValue(int componentRef, String metricKey, double expectedVariation) {
- double variation = measureRepository.getAddedRawMeasure(componentRef, metricKey).get().getVariation();
- assertThat(variation).isEqualTo(expectedVariation, DEFAULT_OFFSET);
+ private void assertRawMeasureValue(int componentRef, String metricKey, double expectedValue) {
+ double value = measureRepository.getAddedRawMeasure(componentRef, metricKey).get().getDoubleValue();
+ assertThat(value).isEqualTo(expectedValue, DEFAULT_OFFSET);
}
private void assertComputedAndAggregatedToZeroInt(String metricKey) {
- assertRawMeasureValueOnPeriod(FILE_1_REF, metricKey, 0);
- assertRawMeasureValueOnPeriod(FILE_2_REF, metricKey, 0);
- assertRawMeasureValueOnPeriod(FILE_3_REF, metricKey, 0);
- assertRawMeasureValueOnPeriod(FILE_4_REF, metricKey, 0);
- assertRawMeasureValueOnPeriod(DIRECTORY_REF, metricKey, 0);
- assertRawMeasureValueOnPeriod(ROOT_REF, metricKey, 0);
+ assertRawMeasureValue(FILE_1_REF, metricKey, 0);
+ assertRawMeasureValue(FILE_2_REF, metricKey, 0);
+ assertRawMeasureValue(FILE_3_REF, metricKey, 0);
+ assertRawMeasureValue(FILE_4_REF, metricKey, 0);
+ assertRawMeasureValue(DIRECTORY_REF, metricKey, 0);
+ assertRawMeasureValue(ROOT_REF, metricKey, 0);
}
private void assertNoRawMeasure(int componentRef, String metricKey) {
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStepTest.java
index a4a2a343b2b..47938c2cbd4 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistLiveMeasuresStepTest.java
@@ -135,13 +135,12 @@ public class PersistLiveMeasuresStepTest extends BaseStepTest {
@Test
public void measures_on_new_code_period_are_persisted() {
prepareProject();
- measureRepository.addRawMeasure(REF_1, INT_METRIC.getKey(), newMeasureBuilder().setVariation(42.0).createNoValue());
+ measureRepository.addRawMeasure(REF_1, INT_METRIC.getKey(), newMeasureBuilder().create(42.0));
step().execute(context);
LiveMeasureDto persistedMeasure = selectMeasure("project-uuid", INT_METRIC).get();
- assertThat(persistedMeasure.getValue()).isNull();
- assertThat(persistedMeasure.getVariation()).isEqualTo(42.0);
+ assertThat(persistedMeasure.getValue()).isEqualTo(42.0);
verifyStatistics(context, 1);
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistMeasuresStepTest.java
index c293d0a4538..d34e61d7f0c 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistMeasuresStepTest.java
@@ -136,13 +136,12 @@ public class PersistMeasuresStepTest extends BaseStepTest {
@Test
public void measures_on_new_code_period_are_persisted() {
prepareProject();
- measureRepository.addRawMeasure(REF_1, INT_METRIC.getKey(), newMeasureBuilder().setVariation(42.0).createNoValue());
+ measureRepository.addRawMeasure(REF_1, INT_METRIC.getKey(), newMeasureBuilder().create(42.0));
TestComputationStepContext context = execute();
MeasureDto persistedMeasure = selectMeasure("project-uuid", INT_METRIC).get();
- assertThat(persistedMeasure.getValue()).isNull();
- assertThat(persistedMeasure.getVariation()).isEqualTo(42.0);
+ assertThat(persistedMeasure.getValue()).isEqualTo(42.0);
assertNbOfInserts(context, 1);
}
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/QualityGateMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/QualityGateMeasuresStepTest.java
index 01b5000b00d..88557dd807b 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/QualityGateMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/QualityGateMeasuresStepTest.java
@@ -261,9 +261,7 @@ public class QualityGateMeasuresStepTest {
Condition periodCondition = createLessThanCondition(INT_METRIC_1, "1");
qualityGateHolder.setQualityGate(new QualityGate(SOME_QG_UUID, SOME_QG_NAME, of(fixedCondition, periodCondition)));
- Measure measure = newMeasureBuilder()
- .setVariation(rawValue)
- .create(rawValue, null);
+ Measure measure = newMeasureBuilder().create(rawValue);
measureRepository.addRawMeasure(PROJECT_REF, INT_METRIC_1_KEY, measure);
underTest.execute(new TestComputationStepContext());
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCaseTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCaseTest.java
index 2a57b37d21a..2ca91cf3219 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCaseTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SmallChangesetQualityGateSpecialCaseTest.java
@@ -66,7 +66,7 @@ public class SmallChangesetQualityGateSpecialCaseTest {
mapSettings.setProperty(CoreProperties.QUALITY_GATE_IGNORE_SMALL_CHANGES, true);
QualityGateMeasuresStep.MetricEvaluationResult metricEvaluationResult = generateEvaluationResult(NEW_COVERAGE_KEY, ERROR);
Component project = generateNewRootProject();
- measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().setVariation(19).create(1000));
+ measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().create(19));
boolean result = underTest.appliesTo(project, metricEvaluationResult);
@@ -78,7 +78,7 @@ public class SmallChangesetQualityGateSpecialCaseTest {
mapSettings.setProperty(CoreProperties.QUALITY_GATE_IGNORE_SMALL_CHANGES, false);
QualityGateMeasuresStep.MetricEvaluationResult metricEvaluationResult = generateEvaluationResult(NEW_COVERAGE_KEY, ERROR);
Component project = generateNewRootProject();
- measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().setVariation(19).create(1000));
+ measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().create(19));
boolean result = underTest.appliesTo(project, metricEvaluationResult);
@@ -89,7 +89,7 @@ public class SmallChangesetQualityGateSpecialCaseTest {
public void should_not_change_for_bigger_changesets() {
QualityGateMeasuresStep.MetricEvaluationResult metricEvaluationResult = generateEvaluationResult(NEW_COVERAGE_KEY, ERROR);
Component project = generateNewRootProject();
- measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().setVariation(20).create(1000));
+ measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().create(20));
boolean result = underTest.appliesTo(project, metricEvaluationResult);
@@ -100,7 +100,7 @@ public class SmallChangesetQualityGateSpecialCaseTest {
public void should_not_change_issue_related_metrics() {
QualityGateMeasuresStep.MetricEvaluationResult metricEvaluationResult = generateEvaluationResult(NEW_BUGS_KEY, ERROR);
Component project = generateNewRootProject();
- measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().setVariation(19).create(1000));
+ measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().create(19));
boolean result = underTest.appliesTo(project, metricEvaluationResult);
@@ -111,7 +111,7 @@ public class SmallChangesetQualityGateSpecialCaseTest {
public void should_not_change_green_conditions() {
QualityGateMeasuresStep.MetricEvaluationResult metricEvaluationResult = generateEvaluationResult(NEW_BUGS_KEY, OK);
Component project = generateNewRootProject();
- measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().setVariation(19).create(1000));
+ measureRepository.addRawMeasure(PROJECT_REF, CoreMetrics.NEW_LINES_KEY, newMeasureBuilder().create(19));
boolean result = underTest.appliesTo(project, metricEvaluationResult);
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStepTest.java
index acaaafa00dd..05800d8cf9c 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportLiveMeasuresStepTest.java
@@ -70,8 +70,8 @@ public class ExportLiveMeasuresStepTest {
public void export_measures() {
ComponentDto project = createProject(true);
componentRepository.register(1, project.uuid(), false);
- MetricDto metric = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()));
- dbTester.measures().insertLiveMeasure(project, metric, m -> m.setValue(4711.0d).setVariation(null));
+ MetricDto metric = dbTester.measures().insertMetric(m -> m.setKey("metric1").setValueType(INT.name()));
+ dbTester.measures().insertLiveMeasure(project, metric, m -> m.setValue(4711.0d));
when(projectHolder.projectDto()).thenReturn(dbTester.components().getProjectDto(project));
when(projectHolder.branches()).thenReturn(newArrayList(new BranchDto()
.setProjectUuid(project.uuid())
@@ -131,8 +131,8 @@ public class ExportLiveMeasuresStepTest {
public void test_exported_fields() {
ComponentDto project = createProject(true);
componentRepository.register(1, project.uuid(), false);
- MetricDto metric = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()));
- dbTester.measures().insertLiveMeasure(project, metric, m -> m.setProjectUuid(project.uuid()).setValue(4711.0d).setData("test").setVariation(7.0d));
+ MetricDto metric = dbTester.measures().insertMetric(m -> m.setKey("new_metric").setValueType(INT.name()));
+ dbTester.measures().insertLiveMeasure(project, metric, m -> m.setProjectUuid(project.uuid()).setValue(7.0d).setData("test"));
when(projectHolder.projectDto()).thenReturn(dbTester.components().getProjectDto(project));
when(projectHolder.branches()).thenReturn(newArrayList(new BranchDto()
.setProjectUuid(project.uuid())
@@ -154,7 +154,7 @@ public class ExportLiveMeasuresStepTest {
.containsOnly(tuple(
1L,
0,
- 4711.0d,
+ 0.0d,
"test",
7.0d));
assertThat(logTester.logs(LoggerLevel.DEBUG)).contains("1 live measures exported");
@@ -166,7 +166,7 @@ public class ExportLiveMeasuresStepTest {
ComponentDto project = createProject(true);
componentRepository.register(1, project.uuid(), false);
MetricDto metric = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()));
- dbTester.measures().insertLiveMeasure(project, metric, m -> m.setProjectUuid(project.uuid()).setValue(null).setData((String) null).setVariation(null));
+ dbTester.measures().insertLiveMeasure(project, metric, m -> m.setProjectUuid(project.uuid()).setValue(null).setData((String) null));
when(projectHolder.projectDto()).thenReturn(dbTester.components().getProjectDto(project));
when(projectHolder.branches()).thenReturn(newArrayList(new BranchDto()
.setProjectUuid(project.uuid())
diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStepTest.java
index faccb9279b3..60e51e242a6 100644
--- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStepTest.java
+++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectexport/steps/ExportMeasuresStepTest.java
@@ -82,6 +82,12 @@ public class ExportMeasuresStepTest {
.setShortName("Coverage")
.setEnabled(false);
+ private static final MetricDto NEW_NCLOC = new MetricDto()
+ .setUuid("5")
+ .setKey("new_ncloc")
+ .setShortName("New Lines of code")
+ .setEnabled(true);
+
private static final List<BranchDto> BRANCHES = newArrayList(
new BranchDto()
.setBranchType(BranchType.BRANCH)
@@ -107,7 +113,7 @@ public class ExportMeasuresStepTest {
String projectUuid = dbTester.components().insertPublicProject(PROJECT).uuid();
componentRepository.register(1, projectUuid, false);
dbTester.getDbClient().componentDao().insert(dbTester.getSession(), FILE, ANOTHER_PROJECT);
- dbTester.getDbClient().metricDao().insert(dbTester.getSession(), NCLOC, DISABLED_METRIC);
+ dbTester.getDbClient().metricDao().insert(dbTester.getSession(), NCLOC, DISABLED_METRIC, NEW_NCLOC);
dbTester.commit();
when(projectHolder.projectDto()).thenReturn(dbTester.components().getProjectDto(PROJECT));
when(projectHolder.branches()).thenReturn(BRANCHES);
@@ -174,8 +180,7 @@ public class ExportMeasuresStepTest {
.setValue(100.0)
.setData("data")
.setAlertStatus("OK")
- .setAlertText("alert text")
- .setVariation(1.0);
+ .setAlertText("alert text");
insertMeasure(analysis, PROJECT, dto);
dbTester.commit();
@@ -189,7 +194,32 @@ public class ExportMeasuresStepTest {
assertThat(measure.getTextValue()).isEqualTo(dto.getData());
assertThat(measure.getMetricRef()).isZero();
assertThat(measure.getAnalysisUuid()).isEqualTo(analysis.getUuid());
- assertThat(measure.getVariation1().getValue()).isEqualTo(dto.getVariation());
+ assertThat(measure.getVariation1().getValue()).isZero();
+ }
+
+ @Test
+ public void test_exported_fields_new_metric() {
+ SnapshotDto analysis = insertSnapshot("U_1", PROJECT, STATUS_PROCESSED);
+ MeasureDto dto = new MeasureDto()
+ .setMetricUuid(NEW_NCLOC.getUuid())
+ .setValue(100.0)
+ .setData("data")
+ .setAlertStatus("OK")
+ .setAlertText("alert text");
+ insertMeasure(analysis, PROJECT, dto);
+ dbTester.commit();
+
+ underTest.execute(new TestComputationStepContext());
+
+ List<ProjectDump.Measure> exportedMeasures = dumpWriter.getWrittenMessagesOf(DumpElement.MEASURES);
+ ProjectDump.Measure measure = exportedMeasures.get(0);
+ assertThat(measure.getAlertStatus()).isEqualTo(dto.getAlertStatus());
+ assertThat(measure.getAlertText()).isEqualTo(dto.getAlertText());
+ assertThat(measure.getDoubleValue().getValue()).isZero();
+ assertThat(measure.getTextValue()).isEqualTo(dto.getData());
+ assertThat(measure.getMetricRef()).isZero();
+ assertThat(measure.getAnalysisUuid()).isEqualTo(analysis.getUuid());
+ assertThat(measure.getVariation1().getValue()).isEqualTo(dto.getValue());
}
@Test
diff --git a/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureAssert.java b/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureAssert.java
index 400d3e927d8..10cc6bbc355 100644
--- a/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureAssert.java
+++ b/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureAssert.java
@@ -89,6 +89,25 @@ public class MeasureAssert extends AbstractAssert<MeasureAssert, Measure> {
return this;
}
+ public MeasureAssert hasValue(double expected, Offset<Double> offset) {
+ isNotNull();
+
+ if (actual.getValueType() != Measure.ValueType.DOUBLE) {
+ failWithMessage(
+ "Expected Measure to have a double value and therefore its ValueType to be <%s> but was <%s>",
+ Measure.ValueType.DOUBLE, actual.getValueType());
+ }
+
+ double value = actual.getDoubleValue();
+ if (abs(expected - value) > offset.value) {
+ failWithMessage(
+ "Expected value of Measure to be close to <%s> by less than <%s> but was <%s>",
+ expected, offset.value, value);
+ }
+
+ return this;
+ }
+
public MeasureAssert hasValue(boolean expected) {
isNotNull();
@@ -197,46 +216,6 @@ public class MeasureAssert extends AbstractAssert<MeasureAssert, Measure> {
}
}
- public MeasureAssert hasVariation(double expected) {
- isNotNull();
- hasVariation();
-
- if (!actual.hasVariation()) {
- failWithMessage("Expected Measure to have a variation but it did not");
- }
-
- double variation = actual.getVariation();
- if (variation != expected) {
- failWithMessage("Expected variation of Measure to be <%s> but was <%s>", expected, variation);
- }
-
- return this;
- }
-
- public MeasureAssert hasVariation(double expected, Offset<Double> offset) {
- isNotNull();
- hasVariation();
-
- if (!actual.hasVariation()) {
- failWithMessage("Expected Measure to have a variation but it did not");
- }
-
- double variation = actual.getVariation();
- if (abs(expected - variation) > offset.value) {
- failWithMessage(
- "Expected variation of Measure to be close to <%s> by less than <%s> but was <%s>",
- expected, offset.value, variation);
- }
-
- return this;
- }
-
- private void hasVariation() {
- if (!actual.hasVariation()) {
- failWithMessage("Expected Measure to have a variation but it did not");
- }
- }
-
public void isAbsent() {
if (actual != null) {
failWithMessage("Expected measure to be absent");
diff --git a/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureRepoEntry.java b/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureRepoEntry.java
index 59809bfefa6..e3be5887f4a 100644
--- a/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureRepoEntry.java
+++ b/server/sonar-ce-task-projectanalysis/src/testFixtures/java/org/sonar/ce/task/projectanalysis/measure/MeasureRepoEntry.java
@@ -19,8 +19,6 @@
*/
package org.sonar.ce.task.projectanalysis.measure;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
@@ -73,7 +71,6 @@ public final class MeasureRepoEntry {
public static boolean deepEquals(Measure measure, Measure measure1) {
return measure.getValueType() == measure1.getValueType()
&& equalsByValue(measure, measure1)
- && equalsByVariation(measure, measure1)
&& equalsByQualityGateStatus(measure, measure1)
&& Objects.equals(measure.getData(), measure1.getData());
}
@@ -99,18 +96,6 @@ public final class MeasureRepoEntry {
}
}
- private static boolean equalsByVariation(Measure measure, Measure measure1) {
- return measure.hasVariation() == measure1.hasVariation() && (!measure.hasVariation()
- || Double.compare(scale(measure.getVariation()), scale(measure1.getVariation())) == 0);
- }
-
- private static final int DOUBLE_PRECISION = 1;
-
- private static double scale(double value) {
- BigDecimal bd = BigDecimal.valueOf(value);
- return bd.setScale(DOUBLE_PRECISION, RoundingMode.HALF_UP).doubleValue();
- }
-
private static boolean equalsByQualityGateStatus(Measure measure, Measure measure1) {
if (measure.hasQualityGateStatus() != measure1.hasQualityGateStatus()) {
return false;