org.jacoco.core.internal.analysis
Class MethodAnalyzer

java.lang.Object
  extended by org.objectweb.asm.MethodVisitor
      extended by org.jacoco.core.internal.flow.MethodProbesVisitor
          extended by org.jacoco.core.internal.analysis.MethodAnalyzer

public class MethodAnalyzer
extends MethodProbesVisitor

A MethodProbesVisitor that analyzes which statements and branches of a method have been executed based on given probe data.


Field Summary
 
Fields inherited from class org.objectweb.asm.MethodVisitor
api, mv
 
Constructor Summary
MethodAnalyzer(String name, String desc, String signature, boolean[] probes)
          New Method analyzer for the given probe data.
 
Method Summary
 IMethodCoverage getCoverage()
          Returns the coverage data for this method after this visitor has been processed.
 void visitEnd()
           
 void visitFieldInsn(int opcode, String owner, String name, String desc)
           
 void visitIincInsn(int var, int increment)
           
 void visitInsn(int opcode)
           
 void visitInsnWithProbe(int opcode, int probeId)
          Visits a zero operand instruction with a probe.
 void visitIntInsn(int opcode, int operand)
           
 void visitInvokeDynamicInsn(String name, String desc, org.objectweb.asm.Handle bsm, Object... bsmArgs)
           
 void visitJumpInsn(int opcode, org.objectweb.asm.Label label)
           
 void visitJumpInsnWithProbe(int opcode, org.objectweb.asm.Label label, int probeId, IFrame frame)
          Visits a jump instruction.
 void visitLabel(org.objectweb.asm.Label label)
           
 void visitLdcInsn(Object cst)
           
 void visitLineNumber(int line, org.objectweb.asm.Label start)
           
 void visitLookupSwitchInsn(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels)
           
 void visitLookupSwitchInsnWithProbes(org.objectweb.asm.Label dflt, int[] keys, org.objectweb.asm.Label[] labels, IFrame frame)
          Visits a LOOKUPSWITCH instruction with optional probes for each target label.
 void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)
           
 void visitMultiANewArrayInsn(String desc, int dims)
           
 void visitProbe(int probeId)
          Visits an unconditional probe that should be inserted at the current position.
 void visitTableSwitchInsn(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label... labels)
           
 void visitTableSwitchInsnWithProbes(int min, int max, org.objectweb.asm.Label dflt, org.objectweb.asm.Label[] labels, IFrame frame)
          Visits a TABLESWITCH instruction with optional probes for each target label.
 void visitTypeInsn(int opcode, String type)
           
 void visitVarInsn(int opcode, int var)
           
 
Methods inherited from class org.objectweb.asm.MethodVisitor
visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitFrame, visitInsnAnnotation, visitLocalVariable, visitLocalVariableAnnotation, visitMaxs, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MethodAnalyzer

public MethodAnalyzer(String name,
                      String desc,
                      String signature,
                      boolean[] probes)
New Method analyzer for the given probe data.

Parameters:
name - method name
desc - method descriptor
signature - optional parameterized signature
probes - recorded probe date of the containing class or null if the class is not executed at all
Method Detail

getCoverage

public IMethodCoverage getCoverage()
Returns the coverage data for this method after this visitor has been processed.

Returns:
coverage data for this method

visitLabel

public void visitLabel(org.objectweb.asm.Label label)
Overrides:
visitLabel in class org.objectweb.asm.MethodVisitor

visitLineNumber

public void visitLineNumber(int line,
                            org.objectweb.asm.Label start)
Overrides:
visitLineNumber in class org.objectweb.asm.MethodVisitor

visitInsn

public void visitInsn(int opcode)
Overrides:
visitInsn in class org.objectweb.asm.MethodVisitor

visitIntInsn

public void visitIntInsn(int opcode,
                         int operand)
Overrides:
visitIntInsn in class org.objectweb.asm.MethodVisitor

visitVarInsn

public void visitVarInsn(int opcode,
                         int var)
Overrides:
visitVarInsn in class org.objectweb.asm.MethodVisitor

visitTypeInsn

public void visitTypeInsn(int opcode,
                          String type)
Overrides:
visitTypeInsn in class org.objectweb.asm.MethodVisitor

visitFieldInsn

public void visitFieldInsn(int opcode,
                           String owner,
                           String name,
                           String desc)
Overrides:
visitFieldInsn in class org.objectweb.asm.MethodVisitor

visitMethodInsn

public void visitMethodInsn(int opcode,
                            String owner,
                            String name,
                            String desc,
                            boolean itf)
Overrides:
visitMethodInsn in class org.objectweb.asm.MethodVisitor

visitInvokeDynamicInsn

public void visitInvokeDynamicInsn(String name,
                                   String desc,
                                   org.objectweb.asm.Handle bsm,
                                   Object... bsmArgs)
Overrides:
visitInvokeDynamicInsn in class org.objectweb.asm.MethodVisitor

visitJumpInsn

public void visitJumpInsn(int opcode,
                          org.objectweb.asm.Label label)
Overrides:
visitJumpInsn in class org.objectweb.asm.MethodVisitor

visitLdcInsn

public void visitLdcInsn(Object cst)
Overrides:
visitLdcInsn in class org.objectweb.asm.MethodVisitor

visitIincInsn

public void visitIincInsn(int var,
                          int increment)
Overrides:
visitIincInsn in class org.objectweb.asm.MethodVisitor

visitTableSwitchInsn

public void visitTableSwitchInsn(int min,
                                 int max,
                                 org.objectweb.asm.Label dflt,
                                 org.objectweb.asm.Label... labels)
Overrides:
visitTableSwitchInsn in class org.objectweb.asm.MethodVisitor

visitLookupSwitchInsn

public void visitLookupSwitchInsn(org.objectweb.asm.Label dflt,
                                  int[] keys,
                                  org.objectweb.asm.Label[] labels)
Overrides:
visitLookupSwitchInsn in class org.objectweb.asm.MethodVisitor

visitMultiANewArrayInsn

public void visitMultiANewArrayInsn(String desc,
                                    int dims)
Overrides:
visitMultiANewArrayInsn in class org.objectweb.asm.MethodVisitor

visitProbe

public void visitProbe(int probeId)
Description copied from class: MethodProbesVisitor
Visits an unconditional probe that should be inserted at the current position.

Overrides:
visitProbe in class MethodProbesVisitor
Parameters:
probeId - id of the probe to insert

visitJumpInsnWithProbe

public void visitJumpInsnWithProbe(int opcode,
                                   org.objectweb.asm.Label label,
                                   int probeId,
                                   IFrame frame)
Description copied from class: MethodProbesVisitor
Visits a jump instruction. A probe with the given id should be inserted in a way that it is executed only when the jump to the given label is executed.

Overrides:
visitJumpInsnWithProbe in class MethodProbesVisitor
Parameters:
opcode - the opcode of the type instruction to be visited. This opcode is either IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE, GOTO, IFNULL or IFNONNULL.
label - the operand of the instruction to be visited. This operand is a label that designates the instruction to which the jump instruction may jump.
probeId - id of the probe
frame - stackmap frame status after the execution of the jump instruction. The instance is only valid with the call of this method.
See Also:
MethodVisitor.visitJumpInsn(int, Label)

visitInsnWithProbe

public void visitInsnWithProbe(int opcode,
                               int probeId)
Description copied from class: MethodProbesVisitor
Visits a zero operand instruction with a probe. This event is used only for instructions that terminate the method. Therefore the probe must be inserted before the actual instruction.

Overrides:
visitInsnWithProbe in class MethodProbesVisitor
Parameters:
opcode - the opcode of the instruction to be visited. This opcode is either IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, RETURN or ATHROW.
probeId - id of the probe
See Also:
MethodVisitor.visitInsn(int)

visitTableSwitchInsnWithProbes

public void visitTableSwitchInsnWithProbes(int min,
                                           int max,
                                           org.objectweb.asm.Label dflt,
                                           org.objectweb.asm.Label[] labels,
                                           IFrame frame)
Description copied from class: MethodProbesVisitor
Visits a TABLESWITCH instruction with optional probes for each target label. Implementations can be optimized based on the fact that the same target labels will always have the same probe id within a call to this method. The probe id for each label can be obtained with LabelInfo.getProbeId(Label).

Overrides:
visitTableSwitchInsnWithProbes in class MethodProbesVisitor
Parameters:
min - the minimum key value.
max - the maximum key value.
dflt - beginning of the default handler block.
labels - beginnings of the handler blocks. labels[i] is the beginning of the handler block for the min + i key.
frame - stackmap frame status after the execution of the switch instruction. The instance is only valid with the call of this method.
See Also:
MethodVisitor.visitTableSwitchInsn(int, int, Label, Label[])

visitLookupSwitchInsnWithProbes

public void visitLookupSwitchInsnWithProbes(org.objectweb.asm.Label dflt,
                                            int[] keys,
                                            org.objectweb.asm.Label[] labels,
                                            IFrame frame)
Description copied from class: MethodProbesVisitor
Visits a LOOKUPSWITCH instruction with optional probes for each target label. Implementations can be optimized based on the fact that the same target labels will always have the same probe id within a call to this method. The probe id for each label can be obtained with LabelInfo.getProbeId(Label).

Overrides:
visitLookupSwitchInsnWithProbes in class MethodProbesVisitor
Parameters:
dflt - beginning of the default handler block.
keys - the values of the keys.
labels - beginnings of the handler blocks. labels[i] is the beginning of the handler block for the keys[i] key.
frame - stackmap frame status after the execution of the switch instruction. The instance is only valid with the call of this method.
See Also:
MethodVisitor.visitLookupSwitchInsn(Label, int[], Label[])

visitEnd

public void visitEnd()
Overrides:
visitEnd in class org.objectweb.asm.MethodVisitor


Copyright © 2009-2016 Mountainminds GmbH & Co. KG. All Rights Reserved.