diff options
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.java | 17 |
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) && |