From c1a1b241c8b2cb39e8e113b8ed01ee0c9e195c1f Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 23 Sep 2013 17:41:18 +0200 Subject: [PATCH] SONAR-4710 Do not persist measures when they contain no value --- .../org/sonar/batch/index/MeasurePersister.java | 11 ++++++++++- .../sonar/batch/index/MeasurePersisterTest.java | 15 +++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java index 50493b4c410..df39afe3273 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java +++ b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java @@ -107,7 +107,16 @@ public final class MeasurePersister { @VisibleForTesting static boolean shouldPersistMeasure(Resource resource, Measure measure) { return measure.getPersistenceMode().useDatabase() && - !(ResourceUtils.isEntity(resource) && measure.isBestValue()); + !(ResourceUtils.isEntity(resource) && measure.isBestValue()) && isMeasureNotEmpty(measure); + } + + private static boolean isMeasureNotEmpty(Measure measure){ + return measure.getValue() != null || measure.getData() != null + || measure.getVariation1() != null + || measure.getVariation2() != null + || measure.getVariation3() != null + || measure.getVariation4() != null + || measure.getVariation5() != null; } private List getMeasuresToSave() { diff --git a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java index 8ec45589b87..e3e5407f0c5 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java @@ -26,11 +26,7 @@ import org.junit.rules.ExpectedException; import org.mockito.ArgumentCaptor; import org.sonar.api.database.model.MeasureModel; import org.sonar.api.database.model.Snapshot; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; -import org.sonar.api.measures.PersistenceMode; -import org.sonar.api.measures.RuleMeasure; +import org.sonar.api.measures.*; import org.sonar.api.resources.JavaFile; import org.sonar.api.resources.JavaPackage; import org.sonar.api.resources.Project; @@ -43,9 +39,7 @@ import org.sonar.core.persistence.AbstractDaoTestCase; import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; public class MeasurePersisterTest extends AbstractDaoTestCase { @@ -264,6 +258,11 @@ public class MeasurePersisterTest extends AbstractDaoTestCase { assertThat(MeasurePersister.shouldPersistMeasure(aFile, duplicatedLines)).isTrue(); } + @Test + public void should_not_save_measures_without_data() { + assertThat(MeasurePersister.shouldPersistMeasure(aFile, new Measure(CoreMetrics.LINES))).isFalse(); + } + private static Snapshot snapshot(int id) { Snapshot snapshot = mock(Snapshot.class); when(snapshot.getId()).thenReturn(id); -- 2.39.5