diff options
author | Evgeny Mandrikov <138671+Godin@users.noreply.github.com> | 2019-03-16 23:46:38 +0100 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2019-03-16 23:46:38 +0100 |
commit | 1db0792e87fa1e0549523c50e9d40a8e257cf74e (patch) | |
tree | 4352fc5c14a7ac079e5b33f5e8432a77ccd70a9d | |
parent | 795c8f9e3b2e7e7abe3f4342bbd4a1dd31530325 (diff) | |
download | platform_external_jacoco-1db0792e87fa1e0549523c50e9d40a8e257cf74e.tar.gz platform_external_jacoco-1db0792e87fa1e0549523c50e9d40a8e257cf74e.tar.bz2 platform_external_jacoco-1db0792e87fa1e0549523c50e9d40a8e257cf74e.zip |
module-info.class should be excluded from analysis (#859)
3 files changed, 21 insertions, 0 deletions
diff --git a/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java b/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java index 6f8fee9c..1e95a5d1 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/analysis/AnalyzerTest.java @@ -77,6 +77,20 @@ public class AnalyzerTest { } @Test + public void should_ignore_module_info() throws Exception { + final ClassWriter cw = new ClassWriter(0); + cw.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null, + null); + cw.visitModule("module", 0, null).visitEnd(); + cw.visitEnd(); + final byte[] bytes = cw.toByteArray(); + + analyzer.analyzeClass(bytes, ""); + + assertTrue(classes.isEmpty()); + } + + @Test public void should_ignore_synthetic_classes() throws Exception { final ClassWriter cw = new ClassWriter(0); cw.visit(Opcodes.V1_5, Opcodes.ACC_SYNTHETIC, "Foo", null, 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 b46f1bbc..76b7be3c 100644 --- a/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java +++ b/org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java @@ -104,6 +104,9 @@ public class Analyzer { private void analyzeClass(final byte[] source) { final long classId = CRC64.classId(source); final ClassReader reader = InstrSupport.classReaderFor(source); + if ((reader.getAccess() & Opcodes.ACC_MODULE) != 0) { + return; + } if ((reader.getAccess() & Opcodes.ACC_SYNTHETIC) != 0) { return; } diff --git a/org.jacoco.doc/docroot/doc/changes.html b/org.jacoco.doc/docroot/doc/changes.html index 71faf94f..fa81f09d 100644 --- a/org.jacoco.doc/docroot/doc/changes.html +++ b/org.jacoco.doc/docroot/doc/changes.html @@ -35,6 +35,10 @@ <li>Fixed incorrect update of frames caused by bug in ASM library in case of arrays with more than 7 dimensions (GitHub <a href="https://github.com/jacoco/jacoco/issues/839">#839</a>).</li> + <li>Fixed regression, which was introduced in 0.8.3 - + <code>module-info.class</code> should be excluded from analysis to not cause + <code>IllegalStateException</code> + (GitHub <a href="https://github.com/jacoco/jacoco/issues/859">#859</a>).</li> </ul> <h3>API Changes</h3> |