package net.sourceforge.cobertura.instrument; import java.io.InputStream; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; import org.objectweb.asm.util.CheckClassAdapter; public class TestUnitVisitor extends ClassVisitor implements Opcodes { private String className; public TestUnitVisitor(ClassVisitor cv, InputStream is) { super(Opcodes.ASM4, new CheckClassAdapter(cv, false)); } @Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { super.visit(version, access, name, signature, superName, interfaces); this.className = name; } @Override public MethodVisitor visitMethod(int access, String methodName, String description, String signature, String[] exceptions) { MethodVisitor nestedVisitor = super.visitMethod(access, methodName, description, signature, exceptions); nestedVisitor.visitCode(); nestedVisitor.visitLdcInsn(className + " - " + methodName); nestedVisitor.visitFieldInsn(PUTSTATIC, "net/sourceforge/cobertura/Cobertura", "TestClassAndMethodNamesMerged", "Ljava/lang/String;"); return nestedVisitor; } }