aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Gageot <david@gageot.net>2012-10-03 09:44:37 +0200
committerDavid Gageot <david@gageot.net>2012-10-03 09:47:03 +0200
commit6c6edf3067e271fd45f3df1cc4b5e0ffceccf69e (patch)
tree13be0e62a8089d0c2599aa8e5ef7230fe6477b6d
parent1d1a0d0b9cc606f3ed6f177f29ade4a40dce06c7 (diff)
downloadsonarqube-6c6edf3067e271fd45f3df1cc4b5e0ffceccf69e.tar.gz
sonarqube-6c6edf3067e271fd45f3df1cc4b5e0ffceccf69e.zip
SONAR-2804 Starting to refactor code for merged coverage
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsBranchCoverageDecorator.java7
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecorator.java21
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/AllTestsLineCoverageDecorator.java7
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/BranchCoverageDecorator.java7
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/CoverageDecorator.java25
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItBranchCoverageDecorator.java6
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItCoverageDecorator.java20
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ItLineCoverageDecorator.java8
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/LineCoverageDecorator.java8
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/AllTestsCoverageDecoratorTest.java12
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/CoverageDecoratorTest.java12
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/ItCoverageDecoratorTest.java12
-rw-r--r--plugins/sonar-jacoco-plugin/src/main/java/org/sonar/plugins/jacoco/JaCoCoAllTestsSensor.java33
13 files changed, 112 insertions, 66 deletions
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<Metric> 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<Metric> 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<Metric> 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<Metric> 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<Metric> 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<Metric> 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<Metric> 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<Metric> 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<Metric> 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;
@@ -45,6 +48,15 @@ public class AllTestsCoverageDecoratorTest {
}
@Test
+ public void should_use_metrics() {
+ Collection<Metric> 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);
assertThat(new CoverageDecorator().shouldExecuteOnProject(project)).isFalse();
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;
@@ -45,6 +48,15 @@ public class CoverageDecoratorTest {
}
@Test
+ public void should_use_metrics() {
+ Collection<Metric> 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);
assertThat(new CoverageDecorator().shouldExecuteOnProject(project)).isFalse();
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;
@@ -45,6 +48,15 @@ public class ItCoverageDecoratorTest {
}
@Test
+ public void should_use_metrics() {
+ Collection<Metric> 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);
assertThat(new CoverageDecorator().shouldExecuteOnProject(project)).isFalse();
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<Measure> 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())) {