aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java')
-rw-r--r--org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java
index 78d7b5e5..8b14a237 100644
--- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java
+++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java
@@ -44,6 +44,8 @@ public class CoverageTransformer implements ClassFileTransformer {
private final ClassFileDumper classFileDumper;
+ private final boolean includeBootstrapClasses;
+
/**
* New transformer with the given delegates.
*
@@ -63,6 +65,7 @@ public class CoverageTransformer implements ClassFileTransformer {
excludes = new WildcardMatcher(toVMName(options.getExcludes()));
exclClassloader = new WildcardMatcher(options.getExclClassloader());
classFileDumper = new ClassFileDumper(options.getClassDumpDir());
+ includeBootstrapClasses = options.getIncludeBootstrapClasses();
}
public byte[] transform(final ClassLoader loader, final String classname,
@@ -102,12 +105,16 @@ public class CoverageTransformer implements ClassFileTransformer {
* @return <code>true</code> if the class should be instrumented
*/
protected boolean filter(final ClassLoader loader, final String classname) {
- // Don't instrument classes of the bootstrap loader:
- return loader != null &&
-
- !classname.startsWith(AGENT_PREFIX) &&
+ if (!includeBootstrapClasses) {
+ if (loader == null) {
+ return false;
+ }
+ if (exclClassloader.matches(loader.getClass().getName())) {
+ return false;
+ }
+ }
- !exclClassloader.matches(loader.getClass().getName()) &&
+ return !classname.startsWith(AGENT_PREFIX) &&
includes.matches(classname) &&