aboutsummaryrefslogtreecommitdiffstats
path: root/org.jacoco.core/src/org
diff options
context:
space:
mode:
Diffstat (limited to 'org.jacoco.core/src/org')
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/CoverageBuilder.java30
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/CoverageNodeImpl.java4
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/ICoverageNode.java9
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java2
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassCoverageImpl.java6
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;
}
}