diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2015-11-09 18:16:56 +0100 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2015-11-09 18:16:56 +0100 |
commit | f4622217085198f3ae42906934026961b29d1111 (patch) | |
tree | ca226abf5ffe7e647cf2a9e8471e6bc9b085eff9 /org.jacoco.core | |
parent | 024536619572c1ad5274cbe6872ea8068a9498ac (diff) | |
download | jacoco-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')
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 |