blob: 7e51195a6e00b5b6d7f71b7bd9782e3b2c7f2def [file] [log] [blame] [edit]
// SPDX-License-Identifier: EPL-2.0 and Apache-2.0
// These patches apply to JaCoCo (https://github.com/jacoco/jacoco) and are hereby made available under the terms of the
// Eclipse Public License 2.0 available at:
// http://www.eclipse.org/legal/epl-2.0
diff --git org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
index 0cc06ada..b65efb03 100644
--- org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
+++ org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
@@ -31,6 +31,8 @@ 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;
+import org.jacoco.core.internal.flow.ClassProbesVisitor;
+import org.jacoco.core.internal.flow.IClassProbesAdapterFactory;
import org.jacoco.core.internal.instr.InstrSupport;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
@@ -52,6 +54,8 @@ public class Analyzer {
private final StringPool stringPool;
+ private final IClassProbesAdapterFactory classProbesAdapterFactory;
+
/**
* Creates a new analyzer reporting to the given output.
*
@@ -63,9 +67,21 @@ public class Analyzer {
*/
public Analyzer(final ExecutionDataStore executionData,
final ICoverageVisitor coverageVisitor) {
+ this(executionData, coverageVisitor, new IClassProbesAdapterFactory() {
+ @Override
+ public ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv, boolean trackFrames) {
+ return new ClassProbesAdapter(cv, trackFrames);
+ };
+ });
+ }
+
+ public Analyzer(final ExecutionDataStore executionData,
+ final ICoverageVisitor coverageVisitor,
+ final IClassProbesAdapterFactory classProbesAdapterFactory) {
this.executionData = executionData;
this.coverageVisitor = coverageVisitor;
this.stringPool = new StringPool();
+ this.classProbesAdapterFactory = classProbesAdapterFactory;
}
/**
@@ -99,7 +115,7 @@ public class Analyzer {
coverageVisitor.visitCoverage(coverage);
}
};
- return new ClassProbesAdapter(analyzer, false);
+ return classProbesAdapterFactory.makeClassProbesAdapter(analyzer, false);
}
private void analyzeClass(final byte[] source) {
diff --git org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java
new file mode 100644
index 00000000..45fc2709
--- /dev/null
+++ org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java
@@ -0,0 +1,6 @@
+package org.jacoco.core.internal.flow;
+
+public interface IClassProbesAdapterFactory {
+ ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv,
+ boolean trackFrames);
+}