| // 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); |
| +} |