From: David Gageot Date: Wed, 3 Oct 2012 07:44:37 +0000 (+0200) Subject: SONAR-2804 Starting to refactor code for merged coverage X-Git-Tag: 3.3~138 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6c6edf3067e271fd45f3df1cc4b5e0ffceccf69e;p=sonarqube.git SONAR-2804 Starting to refactor code for merged coverage --- diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsBranchCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsBranchCoverageDecorator.java index 7949cc91e89..bdc66eae8df 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsBranchCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsBranchCoverageDecorator.java @@ -19,20 +19,19 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.List; public final class AllTestsBranchCoverageDecorator extends AbstractCoverageDecorator { - @DependsUpon public List dependsUponMetrics() { - return Arrays.asList(CoreMetrics.MERGED_UNCOVERED_CONDITIONS, CoreMetrics.MERGED_CONDITIONS_TO_COVER, + return ImmutableList.of(CoreMetrics.MERGED_UNCOVERED_CONDITIONS, CoreMetrics.MERGED_CONDITIONS_TO_COVER, CoreMetrics.NEW_MERGED_UNCOVERED_CONDITIONS, CoreMetrics.NEW_MERGED_CONDITIONS_TO_COVER); } @@ -50,6 +49,7 @@ public final class AllTestsBranchCoverageDecorator extends AbstractCoverageDecor protected long countCoveredElements(DecoratorContext context) { long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_CONDITIONS_TO_COVER), 0L); + return conditions - uncoveredConditions; } @@ -67,6 +67,7 @@ public final class AllTestsBranchCoverageDecorator extends AbstractCoverageDecor protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { long uncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_UNCOVERED_CONDITIONS), periodIndex, 0L); long conditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_CONDITIONS_TO_COVER), periodIndex, 0L); + return conditions - uncoveredConditions; } } diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecorator.java index f83d3291140..5cd791570c8 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecorator.java @@ -19,20 +19,19 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.Collection; public final class AllTestsCoverageDecorator extends AbstractCoverageDecorator { - @DependsUpon public Collection usedMetrics() { - return Arrays.asList(CoreMetrics.MERGED_LINES_TO_COVER, CoreMetrics.MERGED_UNCOVERED_LINES, CoreMetrics.NEW_MERGED_LINES_TO_COVER, + return ImmutableList.of(CoreMetrics.MERGED_LINES_TO_COVER, CoreMetrics.MERGED_UNCOVERED_LINES, CoreMetrics.NEW_MERGED_LINES_TO_COVER, CoreMetrics.NEW_MERGED_UNCOVERED_LINES, CoreMetrics.MERGED_CONDITIONS_TO_COVER, CoreMetrics.MERGED_UNCOVERED_CONDITIONS, CoreMetrics.NEW_MERGED_CONDITIONS_TO_COVER, CoreMetrics.NEW_MERGED_UNCOVERED_CONDITIONS); } @@ -46,6 +45,7 @@ public final class AllTestsCoverageDecorator extends AbstractCoverageDecorator { protected Long countElements(DecoratorContext context) { long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_LINES_TO_COVER), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_CONDITIONS_TO_COVER), 0L); + return lines + conditions; } @@ -55,10 +55,10 @@ public final class AllTestsCoverageDecorator extends AbstractCoverageDecorator { long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_LINES_TO_COVER), 0L); long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_CONDITIONS_TO_COVER), 0L); + return lines + conditions - uncoveredConditions - uncoveredLines; } - @Override protected Metric getGeneratedMetricForNewCode() { return CoreMetrics.NEW_MERGED_COVERAGE; @@ -67,11 +67,13 @@ public final class AllTestsCoverageDecorator extends AbstractCoverageDecorator { @Override protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { Long newLinesToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_LINES_TO_COVER), periodIndex); - if (newLinesToCover != null) { - long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_CONDITIONS_TO_COVER), periodIndex, 0L); - return newLinesToCover + newConditionsToCover; + if (newLinesToCover == null) { + return null; } - return null; + + long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_CONDITIONS_TO_COVER), periodIndex, 0L); + + return newLinesToCover + newConditionsToCover; } @Override @@ -80,6 +82,7 @@ public final class AllTestsCoverageDecorator extends AbstractCoverageDecorator { long newUncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_UNCOVERED_LINES), periodIndex, 0L); long newUncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_UNCOVERED_CONDITIONS), periodIndex, 0L); long newConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_CONDITIONS_TO_COVER), periodIndex, 0L); + return newLines + newConditions - newUncoveredConditions - newUncoveredLines; } -} \ No newline at end of file +} diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsLineCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsLineCoverageDecorator.java index 969cc1cae1b..e815cdc3244 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsLineCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsLineCoverageDecorator.java @@ -19,19 +19,19 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.List; public final class AllTestsLineCoverageDecorator extends AbstractCoverageDecorator { @DependsUpon public List dependsUponMetrics() { - return Arrays.asList(CoreMetrics.MERGED_UNCOVERED_LINES, CoreMetrics.MERGED_LINES_TO_COVER, CoreMetrics.NEW_MERGED_UNCOVERED_LINES, + return ImmutableList.of(CoreMetrics.MERGED_UNCOVERED_LINES, CoreMetrics.MERGED_LINES_TO_COVER, CoreMetrics.NEW_MERGED_UNCOVERED_LINES, CoreMetrics.NEW_MERGED_LINES_TO_COVER); } @@ -49,10 +49,10 @@ public final class AllTestsLineCoverageDecorator extends AbstractCoverageDecorat protected long countCoveredElements(DecoratorContext context) { long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_UNCOVERED_LINES), 0L); long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.MERGED_LINES_TO_COVER), 0L); + return lines - uncoveredLines; } - @Override protected Metric getGeneratedMetricForNewCode() { return CoreMetrics.NEW_MERGED_LINE_COVERAGE; @@ -67,6 +67,7 @@ public final class AllTestsLineCoverageDecorator extends AbstractCoverageDecorat protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { long uncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_UNCOVERED_LINES), periodIndex, 0L); long lines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_MERGED_LINES_TO_COVER), periodIndex, 0L); + return lines - uncoveredLines; } } diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/BranchCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/BranchCoverageDecorator.java index 71cfb259052..72f32ea49d3 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/BranchCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/BranchCoverageDecorator.java @@ -19,20 +19,19 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.List; public final class BranchCoverageDecorator extends AbstractCoverageDecorator { - @DependsUpon public List dependsUponMetrics() { - return Arrays.asList(CoreMetrics.UNCOVERED_CONDITIONS, CoreMetrics.CONDITIONS_TO_COVER, + return ImmutableList.of(CoreMetrics.UNCOVERED_CONDITIONS, CoreMetrics.CONDITIONS_TO_COVER, CoreMetrics.NEW_UNCOVERED_CONDITIONS, CoreMetrics.NEW_CONDITIONS_TO_COVER); } @@ -50,6 +49,7 @@ public final class BranchCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElements(DecoratorContext context) { long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); + return conditions - uncoveredConditions; } @@ -67,6 +67,7 @@ public final class BranchCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { long uncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_CONDITIONS), periodIndex, 0L); long conditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); + return conditions - uncoveredConditions; } } diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/CoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/CoverageDecorator.java index 4a781d8c220..b02c3ebea30 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/CoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/CoverageDecorator.java @@ -19,22 +19,21 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.Collection; public final class CoverageDecorator extends AbstractCoverageDecorator { - @DependsUpon public Collection usedMetrics() { - return Arrays.asList(CoreMetrics.LINES_TO_COVER, CoreMetrics.UNCOVERED_LINES, CoreMetrics.NEW_LINES_TO_COVER, - CoreMetrics.NEW_UNCOVERED_LINES, CoreMetrics.CONDITIONS_TO_COVER, CoreMetrics.UNCOVERED_CONDITIONS, - CoreMetrics.NEW_CONDITIONS_TO_COVER, CoreMetrics.NEW_UNCOVERED_CONDITIONS); + return ImmutableList.of(CoreMetrics.LINES_TO_COVER, CoreMetrics.UNCOVERED_LINES, CoreMetrics.NEW_LINES_TO_COVER, + CoreMetrics.NEW_UNCOVERED_LINES, CoreMetrics.CONDITIONS_TO_COVER, CoreMetrics.UNCOVERED_CONDITIONS, + CoreMetrics.NEW_CONDITIONS_TO_COVER, CoreMetrics.NEW_UNCOVERED_CONDITIONS); } @Override @@ -46,6 +45,7 @@ public final class CoverageDecorator extends AbstractCoverageDecorator { protected Long countElements(DecoratorContext context) { long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.LINES_TO_COVER), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); + return lines + conditions; } @@ -55,10 +55,10 @@ public final class CoverageDecorator extends AbstractCoverageDecorator { long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.LINES_TO_COVER), 0L); long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); + return lines + conditions - uncoveredConditions - uncoveredLines; } - @Override protected Metric getGeneratedMetricForNewCode() { return CoreMetrics.NEW_COVERAGE; @@ -67,11 +67,13 @@ public final class CoverageDecorator extends AbstractCoverageDecorator { @Override protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { Long newLinesToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex); - if (newLinesToCover != null) { - long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); - return newLinesToCover + newConditionsToCover; + if (newLinesToCover == null) { + return null; } - return null; + + long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); + + return newLinesToCover + newConditionsToCover; } @Override @@ -80,6 +82,7 @@ public final class CoverageDecorator extends AbstractCoverageDecorator { long newUncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_LINES), periodIndex, 0L); long newUncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_CONDITIONS), periodIndex, 0L); long newConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); + return newLines + newConditions - newUncoveredConditions - newUncoveredLines; } -} \ No newline at end of file +} diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItBranchCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItBranchCoverageDecorator.java index 5ed3d0d826e..1761b2b4b4b 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItBranchCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItBranchCoverageDecorator.java @@ -19,20 +19,20 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.List; public final class ItBranchCoverageDecorator extends AbstractCoverageDecorator { @DependsUpon public List dependsUponMetrics() { - return Arrays.asList(CoreMetrics.IT_UNCOVERED_CONDITIONS, CoreMetrics.IT_CONDITIONS_TO_COVER, + return ImmutableList.of(CoreMetrics.IT_UNCOVERED_CONDITIONS, CoreMetrics.IT_CONDITIONS_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS, CoreMetrics.NEW_IT_CONDITIONS_TO_COVER); } @@ -50,6 +50,7 @@ public final class ItBranchCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElements(DecoratorContext context) { long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); + return conditions - uncoveredConditions; } @@ -67,6 +68,7 @@ public final class ItBranchCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { long uncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS), periodIndex, 0L); long conditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex, 0L); + return conditions - uncoveredConditions; } } diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItCoverageDecorator.java index 290612594e9..318c5382faf 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItCoverageDecorator.java @@ -19,20 +19,19 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.Collection; public final class ItCoverageDecorator extends AbstractCoverageDecorator { - @DependsUpon public Collection usedMetrics() { - return Arrays.asList(CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.NEW_IT_LINES_TO_COVER, + return ImmutableList.of(CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.NEW_IT_LINES_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_LINES, CoreMetrics.IT_CONDITIONS_TO_COVER, CoreMetrics.IT_UNCOVERED_CONDITIONS, CoreMetrics.NEW_IT_CONDITIONS_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS); } @@ -46,6 +45,7 @@ public final class ItCoverageDecorator extends AbstractCoverageDecorator { protected Long countElements(DecoratorContext context) { long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); + return lines + conditions; } @@ -55,10 +55,10 @@ public final class ItCoverageDecorator extends AbstractCoverageDecorator { long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_CONDITIONS), 0L); long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); + return lines + conditions - uncoveredConditions - uncoveredLines; } - @Override protected Metric getGeneratedMetricForNewCode() { return CoreMetrics.NEW_IT_COVERAGE; @@ -67,11 +67,12 @@ public final class ItCoverageDecorator extends AbstractCoverageDecorator { @Override protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { Long newLinesToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_LINES_TO_COVER), periodIndex); - if (newLinesToCover != null) { - long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex, 0L); - return newLinesToCover + newConditionsToCover; + if (newLinesToCover == null) { + return null; } - return null; + + long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex, 0L); + return newLinesToCover + newConditionsToCover; } @Override @@ -80,6 +81,7 @@ public final class ItCoverageDecorator extends AbstractCoverageDecorator { long newUncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_LINES), periodIndex, 0L); long newUncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS), periodIndex, 0L); long newConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex, 0L); + return newLines + newConditions - newUncoveredConditions - newUncoveredLines; } -} \ No newline at end of file +} diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItLineCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItLineCoverageDecorator.java index 73fa9c15d94..8812685e315 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItLineCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItLineCoverageDecorator.java @@ -19,20 +19,19 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.List; public final class ItLineCoverageDecorator extends AbstractCoverageDecorator { - @DependsUpon public List dependsUponMetrics() { - return Arrays.asList(CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_LINES, + return ImmutableList.of(CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_LINES, CoreMetrics.NEW_IT_LINES_TO_COVER); } @@ -50,10 +49,10 @@ public final class ItLineCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElements(DecoratorContext context) { long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_LINES), 0L); long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); + return lines - uncoveredLines; } - @Override protected Metric getGeneratedMetricForNewCode() { return CoreMetrics.NEW_IT_LINE_COVERAGE; @@ -68,6 +67,7 @@ public final class ItLineCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { long uncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_LINES), periodIndex, 0L); long lines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_LINES_TO_COVER), periodIndex, 0L); + return lines - uncoveredLines; } } diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/LineCoverageDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/LineCoverageDecorator.java index f4e1dfa9443..7d42a8de760 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/LineCoverageDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/LineCoverageDecorator.java @@ -19,20 +19,19 @@ */ package org.sonar.plugins.core.sensors; +import com.google.common.collect.ImmutableList; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.batch.DependsUpon; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.MeasureUtils; import org.sonar.api.measures.Metric; -import java.util.Arrays; import java.util.List; public final class LineCoverageDecorator extends AbstractCoverageDecorator { - @DependsUpon public List dependsUponMetrics() { - return Arrays.asList(CoreMetrics.UNCOVERED_LINES, CoreMetrics.LINES_TO_COVER, CoreMetrics.NEW_UNCOVERED_LINES, + return ImmutableList.of(CoreMetrics.UNCOVERED_LINES, CoreMetrics.LINES_TO_COVER, CoreMetrics.NEW_UNCOVERED_LINES, CoreMetrics.NEW_LINES_TO_COVER); } @@ -50,10 +49,10 @@ public final class LineCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElements(DecoratorContext context) { long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_LINES), 0L); long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.LINES_TO_COVER), 0L); + return lines - uncoveredLines; } - @Override protected Metric getGeneratedMetricForNewCode() { return CoreMetrics.NEW_LINE_COVERAGE; @@ -68,6 +67,7 @@ public final class LineCoverageDecorator extends AbstractCoverageDecorator { protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { long uncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_LINES), periodIndex, 0L); long lines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex, 0L); + return lines - uncoveredLines; } } diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecoratorTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecoratorTest.java index 0a51ab09c5e..b5c4ef15c8a 100644 --- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecoratorTest.java +++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecoratorTest.java @@ -24,9 +24,12 @@ import org.junit.Test; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Measure; +import org.sonar.api.measures.Metric; import org.sonar.api.resources.Project; import org.sonar.api.resources.Scopes; +import java.util.Collection; + import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Matchers.anyDouble; import static org.mockito.Matchers.eq; @@ -44,6 +47,15 @@ public class AllTestsCoverageDecoratorTest { when(project.getScope()).thenReturn(Scopes.PROJECT); } + @Test + public void should_use_metrics() { + Collection metrics = decorator.usedMetrics(); + + assertThat(metrics).containsOnly(CoreMetrics.MERGED_LINES_TO_COVER, CoreMetrics.MERGED_UNCOVERED_LINES, CoreMetrics.NEW_MERGED_LINES_TO_COVER, + CoreMetrics.NEW_MERGED_UNCOVERED_LINES, CoreMetrics.MERGED_CONDITIONS_TO_COVER, CoreMetrics.MERGED_UNCOVERED_CONDITIONS, + CoreMetrics.NEW_MERGED_CONDITIONS_TO_COVER, CoreMetrics.NEW_MERGED_UNCOVERED_CONDITIONS); + } + @Test public void noCoverageWhenStaticAnalysis() { when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC); diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CoverageDecoratorTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CoverageDecoratorTest.java index 2821f94c407..0a9a0a9ddb4 100644 --- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CoverageDecoratorTest.java +++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CoverageDecoratorTest.java @@ -24,9 +24,12 @@ import org.junit.Test; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Measure; +import org.sonar.api.measures.Metric; import org.sonar.api.resources.Project; import org.sonar.api.resources.Scopes; +import java.util.Collection; + import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Mockito.anyDouble; import static org.mockito.Mockito.eq; @@ -44,6 +47,15 @@ public class CoverageDecoratorTest { when(project.getScope()).thenReturn(Scopes.PROJECT); } + @Test + public void should_use_metrics() { + Collection metrics = decorator.usedMetrics(); + + assertThat(metrics).containsOnly(CoreMetrics.LINES_TO_COVER, CoreMetrics.UNCOVERED_LINES, CoreMetrics.NEW_LINES_TO_COVER, + CoreMetrics.NEW_UNCOVERED_LINES, CoreMetrics.CONDITIONS_TO_COVER, CoreMetrics.UNCOVERED_CONDITIONS, + CoreMetrics.NEW_CONDITIONS_TO_COVER, CoreMetrics.NEW_UNCOVERED_CONDITIONS); + } + @Test public void noCoverageWhenStaticAnalysis() { when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC); diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/ItCoverageDecoratorTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/ItCoverageDecoratorTest.java index 76e15386150..1fc2089a376 100644 --- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/ItCoverageDecoratorTest.java +++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/ItCoverageDecoratorTest.java @@ -24,9 +24,12 @@ import org.junit.Test; import org.sonar.api.batch.DecoratorContext; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Measure; +import org.sonar.api.measures.Metric; import org.sonar.api.resources.Project; import org.sonar.api.resources.Scopes; +import java.util.Collection; + import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Matchers.anyDouble; import static org.mockito.Matchers.eq; @@ -44,6 +47,15 @@ public class ItCoverageDecoratorTest { when(project.getScope()).thenReturn(Scopes.PROJECT); } + @Test + public void should_use_metrics() { + Collection metrics = decorator.usedMetrics(); + + assertThat(metrics).containsOnly(CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.NEW_IT_LINES_TO_COVER, + CoreMetrics.NEW_IT_UNCOVERED_LINES, CoreMetrics.IT_CONDITIONS_TO_COVER, CoreMetrics.IT_UNCOVERED_CONDITIONS, + CoreMetrics.NEW_IT_CONDITIONS_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS); + } + @Test public void noCoverageWhenStaticAnalysis() { when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC); diff --git a/plugins/sonar-jacoco-plugin/src/main/java/org/sonar/plugins/jacoco/JaCoCoAllTestsSensor.java b/plugins/sonar-jacoco-plugin/src/main/java/org/sonar/plugins/jacoco/JaCoCoAllTestsSensor.java index 57e4cb84dfa..d37b7357380 100644 --- a/plugins/sonar-jacoco-plugin/src/main/java/org/sonar/plugins/jacoco/JaCoCoAllTestsSensor.java +++ b/plugins/sonar-jacoco-plugin/src/main/java/org/sonar/plugins/jacoco/JaCoCoAllTestsSensor.java @@ -31,7 +31,6 @@ import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Measure; import org.sonar.api.resources.JavaFile; import org.sonar.api.resources.Project; -import org.sonar.api.resources.ProjectFileSystem; import org.sonar.api.utils.SonarException; import java.io.BufferedInputStream; @@ -47,11 +46,9 @@ public class JaCoCoAllTestsSensor implements Sensor { private static final String MERGED_EXEC = "target/merged.exec"; private final JacocoConfiguration configuration; - private final ProjectFileSystem projectFileSystem; - public JaCoCoAllTestsSensor(JacocoConfiguration configuration, ProjectFileSystem projectFileSystem) { + public JaCoCoAllTestsSensor(JacocoConfiguration configuration) { this.configuration = configuration; - this.projectFileSystem = projectFileSystem; } public boolean shouldExecuteOnProject(Project project) { @@ -60,32 +57,32 @@ public class JaCoCoAllTestsSensor implements Sensor { } public void analyse(Project project, SensorContext context) { - mergeReports(); + mergeReports(project); + new AllTestsAnalyzer().analyse(project, context); } - private void mergeReports() { - String reportUTs = configuration.getReportPath(); - String reportITs = configuration.getItReportPath(); - String reportAllTests = MERGED_EXEC; + private void mergeReports(Project project) { + File baseDir = project.getFileSystem().getBasedir(); - File baseDir = projectFileSystem.getBasedir(); - File destFile = new File(baseDir, reportAllTests); + File reportUTs = new File(baseDir, configuration.getReportPath()); + File reportITs = new File(baseDir, configuration.getItReportPath()); + File reportAllTests = new File(baseDir, MERGED_EXEC); - final SessionInfoStore infoStore = new SessionInfoStore(); - final ExecutionDataStore dataStore = new ExecutionDataStore(); + SessionInfoStore infoStore = new SessionInfoStore(); + ExecutionDataStore dataStore = new ExecutionDataStore(); - loadSourceFiles(infoStore, dataStore, new File(baseDir, reportUTs), new File(baseDir, reportITs)); + loadSourceFiles(infoStore, dataStore, reportUTs, reportITs); BufferedOutputStream outputStream = null; try { - outputStream = new BufferedOutputStream(new FileOutputStream(destFile)); + outputStream = new BufferedOutputStream(new FileOutputStream(reportAllTests)); ExecutionDataWriter dataWriter = new ExecutionDataWriter(outputStream); infoStore.accept(dataWriter); dataStore.accept(dataWriter); } catch (IOException e) { - throw new SonarException(String.format("Unable to write merged file %s", destFile.getAbsolutePath()), e); + throw new SonarException(String.format("Unable to write merged file %s", reportAllTests.getAbsolutePath()), e); } finally { Closeables.closeQuietly(outputStream); } @@ -122,14 +119,14 @@ public class JaCoCoAllTestsSensor implements Sensor { @Override protected void saveMeasures(SensorContext context, JavaFile resource, Collection measures) { for (Measure measure : measures) { - Measure mergedMeasure = convertForIT(measure); + Measure mergedMeasure = convertForAllTests(measure); if (mergedMeasure != null) { context.saveMeasure(resource, mergedMeasure); } } } - private Measure convertForIT(Measure measure) { + private Measure convertForAllTests(Measure measure) { if (CoreMetrics.LINES_TO_COVER.equals(measure.getMetric())) { return new Measure(CoreMetrics.MERGED_LINES_TO_COVER, measure.getValue()); } else if (CoreMetrics.UNCOVERED_LINES.equals(measure.getMetric())) {