diff options
Diffstat (limited to 'org.jacoco.core/src/org')
5 files changed, 29 insertions, 22 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/CoverageBuilder.java b/org.jacoco.core/src/org/jacoco/core/analysis/CoverageBuilder.java index 2b240ecf..3c21d244 100644 --- a/org.jacoco.core/src/org/jacoco/core/analysis/CoverageBuilder.java +++ b/org.jacoco.core/src/org/jacoco/core/analysis/CoverageBuilder.java @@ -98,23 +98,19 @@ public class CoverageBuilder implements ICoverageVisitor { // === ICoverageVisitor === public void visitCoverage(final IClassCoverage coverage) { - // Only consider classes that actually contain code: - if (coverage.getInstructionCounter().getTotalCount() > 0) { - final String name = coverage.getName(); - final IClassCoverage dup = classes.put(name, coverage); - if (dup != null) { - if (dup.getId() != coverage.getId()) { - throw new IllegalStateException( - "Can't add different class with same name: " - + name); - } - } else { - final String source = coverage.getSourceFileName(); - if (source != null) { - final SourceFileCoverageImpl sourceFile = getSourceFile( - source, coverage.getPackageName()); - sourceFile.increment(coverage); - } + final String name = coverage.getName(); + final IClassCoverage dup = classes.put(name, coverage); + if (dup != null) { + if (dup.getId() != coverage.getId()) { + throw new IllegalStateException( + "Can't add different class with same name: " + name); + } + } else { + final String source = coverage.getSourceFileName(); + if (source != null) { + final SourceFileCoverageImpl sourceFile = getSourceFile(source, + coverage.getPackageName()); + sourceFile.increment(coverage); } } } diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/CoverageNodeImpl.java b/org.jacoco.core/src/org/jacoco/core/analysis/CoverageNodeImpl.java index c1bcb26a..450a9a21 100644 --- a/org.jacoco.core/src/org/jacoco/core/analysis/CoverageNodeImpl.java +++ b/org.jacoco.core/src/org/jacoco/core/analysis/CoverageNodeImpl.java @@ -143,6 +143,10 @@ public class CoverageNodeImpl implements ICoverageNode { throw new AssertionError(entity); } + public boolean isEmpty() { + return getInstructionCounter().getTotalCount() == 0; + } + public ICoverageNode getPlainCopy() { final CoverageNodeImpl copy = new CoverageNodeImpl(elementType, name); copy.instructionCounter = CounterImpl.getInstance(instructionCounter); diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/ICoverageNode.java b/org.jacoco.core/src/org/jacoco/core/analysis/ICoverageNode.java index f7605278..a43747c2 100644 --- a/org.jacoco.core/src/org/jacoco/core/analysis/ICoverageNode.java +++ b/org.jacoco.core/src/org/jacoco/core/analysis/ICoverageNode.java @@ -132,6 +132,13 @@ public interface ICoverageNode { ICounter getCounter(CounterEntity entity); /** + * Checks whether this is an empty node. + * + * @return <code>true</code> if this node does not contain instructions + */ + boolean isEmpty(); + + /** * Creates a plain copy of this node. While {@link ICoverageNode} * implementations may contain heavy data structures, the copy returned by * this method is reduced to the counters only. This helps to save memory @@ -141,4 +148,4 @@ public interface ICoverageNode { */ ICoverageNode getPlainCopy(); -}
\ No newline at end of file +} diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java index c584cacf..f65bcf93 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java @@ -113,7 +113,7 @@ public class ClassAnalyzer extends ClassProbesVisitor signature); mcc.calculate(mc); - if (mc.getInstructionCounter().getTotalCount() > 0) { + if (!mc.isEmpty()) { // Only consider methods that actually contain code coverage.addMethod(mc); } diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassCoverageImpl.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassCoverageImpl.java index cb45604c..04bc81dc 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassCoverageImpl.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassCoverageImpl.java @@ -47,7 +47,6 @@ public class ClassCoverageImpl extends SourceNodeImpl implements IClassCoverage this.id = id; this.noMatch = noMatch; this.methods = new ArrayList<IMethodCoverage>(); - this.classCounter = CounterImpl.COUNTER_1_0; } /** @@ -59,10 +58,11 @@ public class ClassCoverageImpl extends SourceNodeImpl implements IClassCoverage public void addMethod(final IMethodCoverage method) { this.methods.add(method); increment(method); - // As class is considered as covered when at least one method is - // covered: + // Class is considered as covered when at least one method is covered: if (methodCounter.getCoveredCount() > 0) { this.classCounter = CounterImpl.COUNTER_0_1; + } else { + this.classCounter = CounterImpl.COUNTER_1_0; } } |