aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.core
diff options
context:
space:
mode:
authorMarc R. Hoffmann <hoffmann@mountainminds.com>2015-11-09 18:16:56 +0100
committerMarc R. Hoffmann <hoffmann@mountainminds.com>2015-11-09 18:16:56 +0100
commitf4622217085198f3ae42906934026961b29d1111 (patch)
treeca226abf5ffe7e647cf2a9e8471e6bc9b085eff9 /org.jacoco.core
parent024536619572c1ad5274cbe6872ea8068a9498ac (diff)
downloadjacoco-f4622217085198f3ae42906934026961b29d1111.tar.gz
Refactoring: Avoid passing data around
Avoid passing too much data around for creation of ClassCoverageImpl instances.
Diffstat (limited to 'org.jacoco.core')
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java9
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/IClassCoverage.java2
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java35
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassCoverageImpl.java51
4 files changed, 52 insertions, 45 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java b/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
index 466cdcd3..2da843d4 100644
--- a/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
+++ b/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
@@ -25,6 +25,7 @@ import org.jacoco.core.data.ExecutionDataStore;
import org.jacoco.core.internal.ContentTypeDetector;
import org.jacoco.core.internal.Pack200Streams;
import org.jacoco.core.internal.analysis.ClassAnalyzer;
+import org.jacoco.core.internal.analysis.ClassCoverageImpl;
import org.jacoco.core.internal.analysis.StringPool;
import org.jacoco.core.internal.data.CRC64;
import org.jacoco.core.internal.flow.ClassProbesAdapter;
@@ -84,12 +85,14 @@ public class Analyzer {
probes = data.getProbes();
noMatch = false;
}
- final ClassAnalyzer analyzer = new ClassAnalyzer(classid, noMatch,
- probes, stringPool) {
+ final ClassCoverageImpl coverage = new ClassCoverageImpl(className,
+ classid, noMatch);
+ final ClassAnalyzer analyzer = new ClassAnalyzer(coverage, probes,
+ stringPool) {
@Override
public void visitEnd() {
super.visitEnd();
- coverageVisitor.visitCoverage(getCoverage());
+ coverageVisitor.visitCoverage(coverage);
}
};
return new ClassProbesAdapter(analyzer, false);
diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/IClassCoverage.java b/org.jacoco.core/src/org/jacoco/core/analysis/IClassCoverage.java
index 14693941..61fe3a01 100644
--- a/org.jacoco.core/src/org/jacoco/core/analysis/IClassCoverage.java
+++ b/org.jacoco.core/src/org/jacoco/core/analysis/IClassCoverage.java
@@ -55,7 +55,7 @@ public interface IClassCoverage extends ISourceNode {
public String getSuperName();
/**
- * Returns the VM names of implemented/extended interfaces
+ * Returns the VM names of implemented/extended interfaces.
*
* @return VM names of implemented/extended interfaces
*/
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 2df27fba..f59457fb 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
@@ -23,56 +23,39 @@ import org.objectweb.asm.Opcodes;
*/
public class ClassAnalyzer extends ClassProbesVisitor {
- private final long classid;
- private final boolean noMatch;
+ private final ClassCoverageImpl coverage;
private final boolean[] probes;
private final StringPool stringPool;
- private ClassCoverageImpl coverage;
-
/**
* Creates a new analyzer that builds coverage data for a class.
*
- * @param classid
- * id of the class
- * @param noMatch
- * <code>true</code> if class id does not match with execution
- * data
+ * @param coverage
+ * coverage node for the analyzed class data
* @param probes
* execution data for this class or <code>null</code>
* @param stringPool
* shared pool to minimize the number of {@link String} instances
*/
- public ClassAnalyzer(final long classid, final boolean noMatch,
+ public ClassAnalyzer(final ClassCoverageImpl coverage,
final boolean[] probes, final StringPool stringPool) {
- this.classid = classid;
- this.noMatch = noMatch;
+ this.coverage = coverage;
this.probes = probes;
this.stringPool = stringPool;
}
- /**
- * Returns the coverage data for this class after this visitor has been
- * processed.
- *
- * @return coverage data for this class
- */
- public ClassCoverageImpl getCoverage() {
- return coverage;
- }
-
@Override
public void visit(final int version, final int access, final String name,
final String signature, final String superName,
final String[] interfaces) {
- this.coverage = new ClassCoverageImpl(stringPool.get(name), classid,
- noMatch, stringPool.get(signature), stringPool.get(superName),
- stringPool.get(interfaces));
+ coverage.setSignature(stringPool.get(signature));
+ coverage.setSuperName(stringPool.get(superName));
+ coverage.setInterfaces(stringPool.get(interfaces));
}
@Override
public void visitSource(final String source, final String debug) {
- this.coverage.setSourceFileName(stringPool.get(source));
+ coverage.setSourceFileName(stringPool.get(source));
}
@Override
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 fe42f5d2..0a806440 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
@@ -24,38 +24,28 @@ public class ClassCoverageImpl extends SourceNodeImpl implements IClassCoverage
private final long id;
private final boolean noMatch;
- private final String signature;
- private final String superName;
- private final String[] interfaces;
private final Collection<IMethodCoverage> methods;
+ private String signature;
+ private String superName;
+ private String[] interfaces;
private String sourceFileName;
/**
* Creates a class coverage data object with the given parameters.
*
* @param name
- * vm name of the class
+ * VM name of the class
* @param id
* class identifier
* @param noMatch
* <code>true</code>, if class id does not match with execution
* data
- * @param signature
- * vm signature of the class
- * @param superName
- * vm name of the superclass of this class
- * @param interfaces
- * vm names of interfaces of this class
*/
public ClassCoverageImpl(final String name, final long id,
- final boolean noMatch, final String signature,
- final String superName, final String[] interfaces) {
+ final boolean noMatch) {
super(ElementType.CLASS, name);
this.id = id;
this.noMatch = noMatch;
- this.signature = signature;
- this.superName = superName;
- this.interfaces = interfaces;
this.methods = new ArrayList<IMethodCoverage>();
this.classCounter = CounterImpl.COUNTER_1_0;
}
@@ -77,6 +67,37 @@ public class ClassCoverageImpl extends SourceNodeImpl implements IClassCoverage
}
/**
+ * Sets the VM signature of the class.
+ *
+ * @param signature
+ * VM signature of the class (may be <code>null</code>)
+ */
+ public void setSignature(final String signature) {
+ this.signature = signature;
+ }
+
+ /**
+ * Sets the VM name of the superclass.
+ *
+ * @param superName
+ * VM name of the super class (may be <code>null</code>, i.e.
+ * <code>java/lang/Object</code>)
+ */
+ public void setSuperName(final String superName) {
+ this.superName = superName;
+ }
+
+ /**
+ * Sets the VM names of implemented/extended interfaces.
+ *
+ * @param interfaces
+ * VM names of implemented/extended interfaces
+ */
+ public void setInterfaces(final String[] interfaces) {
+ this.interfaces = interfaces;
+ }
+
+ /**
* Sets the name of the corresponding source file for this class.
*
* @param sourceFileName