TeamCity automatically uses emma to instrument code for code coverage testing, however if I use OpenJPA, which internally uses serp to enhance classes afterwards, I get the error listed below. It seems serp chokes on something that emma does to the bytecode here.
Serp version is 1.13.1
OpenJPA version is 2.0.1
[16:18:06]: [compile] ant (5s)
[16:18:06]: [ant] init
[16:18:06]: [init] mkdir
[16:18:06]: [mkdir] Created dir: /opt/TeamCity/TeamCity/buildAgent/work/550753df1bfcacc8/Preismonitor/build/ant
[16:18:06]: [ant] compile (2s)
[16:18:06]: [compile] echo
[16:18:07]: [echo] Compiling preismonitor files
[16:18:07]: [compile] Adding debug=true parameter to javac task
[16:18:07]: [compile] javac (2s)
[16:18:07]: [javac] /opt/TeamCity/TeamCity/buildAgent/work/550753df1bfcacc8/Preismonitor/build.xml:59: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[16:18:07]: [javac] Compiling 32 source files to /opt/TeamCity/TeamCity/buildAgent/work/550753df1bfcacc8/Preismonitor/build/ant
[16:18:09]: [compile] EMMA: Instrumenting classes
[16:18:09]: [EMMA: Instrumenting classes] EMMA commandline: [-ix, -*Test*, -cp, /opt/TeamCity/TeamCity/buildAgent/work/550753df1bfcacc8/Preismonitor/build/ant, -m, overwrite]
[16:18:09]: [EMMA: Instrumenting classes] EMMA: processing instrumentation path ...
[16:18:09]: [EMMA: Instrumenting classes] EMMA: instrumentation path processed in 152 ms
[16:18:09]: [EMMA: Instrumenting classes] EMMA: [32 class(es) instrumented, 0 resource(s) copied]
[16:18:09]: [EMMA: Instrumenting classes] EMMA: metadata merged into [/opt/TeamCity/TeamCity/buildAgent/work/550753df1bfcacc8/coverage.em] {in 16 ms}
[16:18:09]: [ant] enhance (2s)
[16:18:09]: [enhance] echo
[16:18:09]: [echo] /opt/TeamCity/TeamCity/buildAgent/work/550753df1bfcacc8/Preismonitor
[16:18:10]: [enhance] openjpac (2s)
[16:18:12]: [openjpac] java.lang.IllegalArgumentException: 5
[16:18:12]: [openjpac] at serp.bytecode.Code.getInstruction(Code.java:2131)
[16:18:12]: [openjpac] at serp.bytecode.Local.getEnd(Local.java:113)
[16:18:12]: [openjpac] at serp.bytecode.Local.updateTargets(Local.java:155)
[16:18:12]: [openjpac] at serp.bytecode.LocalTable.updateTargets(LocalTable.java:163)
[16:18:12]: [openjpac] at serp.bytecode.Code.read(Code.java:2031)
[16:18:12]: [openjpac] at serp.bytecode.Attributes.readAttributes(Attributes.java:152)
[16:18:12]: [openjpac] at serp.bytecode.BCMember.read(BCMember.java:365)
[16:18:12]: [openjpac] at serp.bytecode.BCClass.read(BCClass.java:123)
[16:18:12]: [openjpac] at serp.bytecode.BCClass.read(BCClass.java:144)
[16:18:12]: [openjpac] at serp.bytecode.Project.loadClass(Project.java:139)
[16:18:12]: [openjpac] at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4648)
[16:18:12]: [openjpac] at org.apache.openjpa.ant.PCEnhancerTask.executeOn(PCEnhancerTask.java:89)
[16:18:12]: [openjpac] at org.apache.openjpa.lib.ant.AbstractTask.execute(AbstractTask.java:171)
[16:18:12]: [openjpac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[16:18:12]: [openjpac] at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
[16:18:12]: [openjpac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[16:18:12]: [openjpac] at java.lang.reflect.Method.invoke(Method.java:616)
[16:18:12]: [openjpac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[16:18:12]: [openjpac] at org.apache.tools.ant.Task.perform(Task.java:348)
[16:18:12]: [openjpac] at org.apache.tools.ant.Target.execute(Target.java:390)
[16:18:12]: [openjpac] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[16:18:12]: [openjpac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
[16:18:12]: [openjpac] at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
[16:18:12]: [openjpac] at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
[16:18:12]: [openjpac] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
[16:18:12]: [openjpac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[16:18:12]: [openjpac] at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
[16:18:12]: [openjpac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[16:18:12]: [openjpac] at java.lang.reflect.Method.invoke(Method.java:616)
[16:18:12]: [openjpac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[16:18:12]: [openjpac] at org.apache.tools.ant.Task.perform(Task.java:348)
[16:18:12]: [openjpac] at org.apache.tools.ant.Target.execute(Target.java:390)
[16:18:12]: [openjpac] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[16:18:12]: [openjpac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
[16:18:12]: [openjpac] at org.apache.tools.ant.Project.executeTarget(Project.java:1329)
[16:18:12]: [openjpac] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[16:18:12]: [openjpac] at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
[16:18:12]: [openjpac] at org.apache.tools.ant.Main.runBuild(Main.java:801)
[16:18:12]: [openjpac] at org.apache.tools.ant.Main.startAnt(Main.java:218)
[16:18:12]: [openjpac] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[16:18:12]: [openjpac] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
[16:18:12]: [openjpac] java.lang.IllegalArgumentException: 5
Still the same with serp-1.14.1 from Ubuntu/Debian:
[18:51:51]: [openjpac] java.lang.IllegalArgumentException: 109
[18:51:51]: [openjpac] at serp.bytecode.Code.getInstruction(Code.java:2131)
[18:51:51]: [openjpac] at serp.bytecode.Local.getEnd(Local.java:113)
[18:51:51]: [openjpac] at serp.bytecode.Local.updateTargets(Local.java:155)
[18:51:51]: [openjpac] at serp.bytecode.LocalTable.updateTargets(LocalTable.java:163)
[18:51:51]: [openjpac] at serp.bytecode.Code.read(Code.java:2031)
[18:51:51]: [openjpac] at serp.bytecode.Attributes.readAttributes(Attributes.java:152)
[18:51:51]: [openjpac] at serp.bytecode.BCMember.read(BCMember.java:365)
[18:51:51]: [openjpac] at serp.bytecode.BCClass.read(BCClass.java:123)
[18:51:51]: [openjpac] at serp.bytecode.BCClass.read(BCClass.java:144)
[18:51:51]: [openjpac] at serp.bytecode.Project.loadClass(Project.java:139)
[18:51:51]: [openjpac] at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4648)
[18:51:51]: [openjpac] at org.apache.openjpa.ant.PCEnhancerTask.executeOn(PCEnhancerTask.java:89)
[18:51:51]: [openjpac] at org.apache.openjpa.lib.ant.AbstractTask.execute(AbstractTask.java:171)
[18:51:51]: [openjpac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[18:51:51]: [openjpac] at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
[18:51:51]: [openjpac] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[18:51:51]: [openjpac] at java.lang.reflect.Method.invoke(Method.java:616)
[18:51:51]: [openjpac] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[18:51:51]: [openjpac] at org.apache.tools.ant.Task.perform(Task.java:348)
[18:51:51]: [openjpac] at org.apache.tools.ant.Target.execute(Target.java:390)
[18:51:51]: [openjpac] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[18:51:51]: [openjpac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
[18:51:51]: [openjpac] at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
[18:51:51]: [openjpac] at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
[18:51:51]: [openjpac] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
[18:51:51]: [openjpac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)