diff options
author | Evgeny Mandrikov <Godin@users.noreply.github.com> | 2017-02-27 15:03:44 +0100 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2017-02-27 15:03:44 +0100 |
commit | 296f992a80fb545bb3447c8882cf213f56a765bd (patch) | |
tree | 1c0e28a70e92dfd8cce5f24feef27f26f3e230eb /org.jacoco.core/src/org | |
parent | 274577d8ff30202c14868923fc75370510e4e0df (diff) | |
download | jacoco-296f992a80fb545bb3447c8882cf213f56a765bd.tar.gz |
Exclude enum methods "values" and "valueOf" from reports (#491)
Diffstat (limited to 'org.jacoco.core/src/org')
-rw-r--r-- | org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java index f32ef8db..06e13248 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/ClassAnalyzer.java @@ -64,7 +64,8 @@ public class ClassAnalyzer extends ClassProbesVisitor { InstrSupport.assertNotInstrumented(name, coverage.getName()); - if (isMethodFiltered(access, name)) { + if (isMethodFiltered(coverage.getName(), coverage.getSuperName(), + access, name, desc)) { return null; } @@ -82,8 +83,25 @@ public class ClassAnalyzer extends ClassProbesVisitor { }; } + /** + * @return <code>true</code> if method should not be analyzed + */ // TODO: Use filter hook in future - private boolean isMethodFiltered(final int access, final String name) { + private boolean isMethodFiltered(final String className, + final String superClassName, final int access, final String name, + final String desc) { + if ("java/lang/Enum".equals(superClassName)) { + // filter out methods that compiler creates for enums + if ("values".equals(name) + && ("()[L" + className + ";").equals(desc)) { + return true; + } + if ("valueOf".equals(name) + && ("(Ljava/lang/String;)L" + className + ";") + .equals(desc)) { + return true; + } + } return (access & Opcodes.ACC_SYNTHETIC) != 0 && !name.startsWith("lambda$"); } |