Package edu.umd.cs.findbugs.visitclass
Class PreorderVisitor
- java.lang.Object
-
- edu.umd.cs.findbugs.visitclass.BetterVisitor
-
- edu.umd.cs.findbugs.visitclass.PreorderVisitor
-
- All Implemented Interfaces:
Constants2
,org.apache.bcel.classfile.Visitor
,org.apache.bcel.Constants
- Direct Known Subclasses:
AnnotationVisitor
,CallToUnconditionalThrower
,CheckImmutableAnnotation
,ComparatorIdiom
,ConfusedInheritance
,DontCatchIllegalMonitorStateException
,DroppedException
,DuplicateBranches
,FindBugsSummaryStats
,Methods
,Naming
,PreorderDetector
,RedundantInterfaces
,ResolveAllReferences
public abstract class PreorderVisitor extends BetterVisitor implements Constants2
Interface to make the use of a visitor pattern programming style possible. I.e. a class that implements this interface can traverse the contents of a Java class just by calling the `accept' method which all classes have. Implemented by wish of Boris Bokowski. If don't like it, blame him. If you do like it thank me 8-)- Version:
- 970819
- Author:
- M. Dahm
-
-
Field Summary
-
Fields inherited from interface org.apache.bcel.Constants
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_LOCAL_VARIABLE_TYPE_TABLE, ATTR_PMG, ATTR_RUNTIMEINVISIBLE_ANNOTATIONS, ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_ANNOTATIONS, ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
-
-
Constructor Summary
Constructors Constructor Description PreorderVisitor()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
amVisitingMainMethod()
protected int
asUnsignedByte(byte b)
void
doVisitMethod(org.apache.bcel.classfile.Method method)
ClassDescriptor
getClassDescriptor()
java.lang.String
getClassName()
Get the slash-formatted class name for the current or most recently visited classorg.apache.bcel.classfile.Code
getCode()
Return the current Code attribute; assuming one is being visitedorg.apache.bcel.classfile.ConstantPool
getConstantPool()
Get the constant pool for the current or most recently visited classjava.lang.String
getDottedClassName()
Get the dotted class name for the current or most recently visited classjava.lang.String
getDottedFieldSig()
Deprecated.java.lang.String
getDottedMethodSig()
If currently visiting a method, get the method's dotted method signaturejava.lang.String
getDottedSuperclassName()
Get the dotted superclass name for the current or most recently visited classorg.apache.bcel.classfile.Field
getField()
If currently visiting a method, get the method's Method objectFieldDescriptor
getFieldDescriptor()
boolean
getFieldIsStatic()
If currently visiting a field, return whether or not the field is staticjava.lang.String
getFieldName()
If currently visiting a field, get the field's namejava.lang.String
getFieldSig()
If currently visiting a field, get the field's slash-formatted signaturejava.lang.String
getFullyQualifiedFieldName()
If currently visiting a field, get the field's fully qualified namejava.lang.String
getFullyQualifiedMethodName()
If currently visiting a method, get the method's fully qualified nameorg.apache.bcel.classfile.Method
getMethod()
If currently visiting a method, get the method's Method objectMethodDescriptor
getMethodDescriptor()
java.lang.String
getMethodName()
If currently visiting a method, get the method's namejava.lang.String
getMethodSig()
If currently visiting a method, get the method's slash-formatted signaturestatic int
getNumberArguments(java.lang.String signature)
int
getNumberMethodArguments()
java.lang.String
getPackageName()
Get the (slash-formatted?) package name for the current or most recently visited classint
getSizeOfSurroundingTryBlock(int pc)
Get lines of code in try block that surround pcint
getSizeOfSurroundingTryBlock(java.lang.String vmNameOfExceptionClass, int pc)
Get lines of code in try block that surround pcjava.lang.String
getSourceFile()
Get the source file name for the current or most recently visited classprotected java.lang.String
getStringFromIndex(int i)
java.lang.String
getSuperclassName()
Get the slash-formatted superclass name for the current or most recently visited classjava.util.Set<java.lang.String>
getSurroundingCaughtExceptions(int pc)
org.apache.bcel.classfile.JavaClass
getThisClass()
Get the JavaClass object for the current or most recently visited classXClass
getXClass()
XField
getXField()
XMethod
getXMethod()
void
setupVisitorForClass(org.apache.bcel.classfile.JavaClass obj)
boolean
shouldVisit(org.apache.bcel.classfile.JavaClass obj)
void
visitAfter(org.apache.bcel.classfile.JavaClass obj)
void
visitCode(org.apache.bcel.classfile.Code obj)
void
visitConstantPool(org.apache.bcel.classfile.ConstantPool obj)
boolean
visitingField()
is the visitor currently visiting a field?boolean
visitingMethod()
is the visitor currently visiting a method?void
visitInnerClasses(org.apache.bcel.classfile.InnerClasses obj)
void
visitJavaClass(org.apache.bcel.classfile.JavaClass obj)
void
visitLineNumberTable(org.apache.bcel.classfile.LineNumberTable obj)
void
visitLocalVariableTable(org.apache.bcel.classfile.LocalVariableTable obj)
-
Methods inherited from class edu.umd.cs.findbugs.visitclass.BetterVisitor
clone, report, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitStackMap, visitStackMapEntry, visitSynthetic, visitUnknown
-
-
-
-
Method Detail
-
getStringFromIndex
protected java.lang.String getStringFromIndex(int i)
-
asUnsignedByte
protected int asUnsignedByte(byte b)
-
getCode
public org.apache.bcel.classfile.Code getCode()
Return the current Code attribute; assuming one is being visited- Returns:
- current code attribute
-
getSurroundingCaughtExceptions
public java.util.Set<java.lang.String> getSurroundingCaughtExceptions(int pc)
-
getSizeOfSurroundingTryBlock
public int getSizeOfSurroundingTryBlock(int pc)
Get lines of code in try block that surround pc- Parameters:
pc
-- Returns:
- number of lines of code in try block
-
getSizeOfSurroundingTryBlock
public int getSizeOfSurroundingTryBlock(java.lang.String vmNameOfExceptionClass, int pc)
Get lines of code in try block that surround pc- Parameters:
pc
-- Returns:
- number of lines of code in try block
-
visitCode
public void visitCode(org.apache.bcel.classfile.Code obj)
- Specified by:
visitCode
in interfaceorg.apache.bcel.classfile.Visitor
- Overrides:
visitCode
in classBetterVisitor
-
visitConstantPool
public void visitConstantPool(org.apache.bcel.classfile.ConstantPool obj)
- Specified by:
visitConstantPool
in interfaceorg.apache.bcel.classfile.Visitor
- Overrides:
visitConstantPool
in classBetterVisitor
-
doVisitMethod
public void doVisitMethod(org.apache.bcel.classfile.Method method)
-
amVisitingMainMethod
public boolean amVisitingMainMethod()
-
visitInnerClasses
public void visitInnerClasses(org.apache.bcel.classfile.InnerClasses obj)
- Specified by:
visitInnerClasses
in interfaceorg.apache.bcel.classfile.Visitor
- Overrides:
visitInnerClasses
in classBetterVisitor
-
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj)
-
shouldVisit
public boolean shouldVisit(org.apache.bcel.classfile.JavaClass obj)
-
visitJavaClass
public void visitJavaClass(org.apache.bcel.classfile.JavaClass obj)
- Specified by:
visitJavaClass
in interfaceorg.apache.bcel.classfile.Visitor
- Overrides:
visitJavaClass
in classBetterVisitor
-
setupVisitorForClass
public void setupVisitorForClass(org.apache.bcel.classfile.JavaClass obj)
-
visitLineNumberTable
public void visitLineNumberTable(org.apache.bcel.classfile.LineNumberTable obj)
- Specified by:
visitLineNumberTable
in interfaceorg.apache.bcel.classfile.Visitor
- Overrides:
visitLineNumberTable
in classBetterVisitor
-
visitLocalVariableTable
public void visitLocalVariableTable(org.apache.bcel.classfile.LocalVariableTable obj)
- Specified by:
visitLocalVariableTable
in interfaceorg.apache.bcel.classfile.Visitor
- Overrides:
visitLocalVariableTable
in classBetterVisitor
-
getXClass
public XClass getXClass()
-
getClassDescriptor
public ClassDescriptor getClassDescriptor()
-
getXMethod
public XMethod getXMethod()
-
getMethodDescriptor
public MethodDescriptor getMethodDescriptor()
-
getXField
public XField getXField()
-
getFieldDescriptor
public FieldDescriptor getFieldDescriptor()
-
getConstantPool
public org.apache.bcel.classfile.ConstantPool getConstantPool()
Get the constant pool for the current or most recently visited class
-
getClassName
@SlashedClassName public java.lang.String getClassName()
Get the slash-formatted class name for the current or most recently visited class
-
getDottedClassName
@DottedClassName public java.lang.String getDottedClassName()
Get the dotted class name for the current or most recently visited class
-
getPackageName
public java.lang.String getPackageName()
Get the (slash-formatted?) package name for the current or most recently visited class
-
getSourceFile
public java.lang.String getSourceFile()
Get the source file name for the current or most recently visited class
-
getSuperclassName
@SlashedClassName public java.lang.String getSuperclassName()
Get the slash-formatted superclass name for the current or most recently visited class
-
getDottedSuperclassName
@DottedClassName public java.lang.String getDottedSuperclassName()
Get the dotted superclass name for the current or most recently visited class
-
getThisClass
public org.apache.bcel.classfile.JavaClass getThisClass()
Get the JavaClass object for the current or most recently visited class
-
getFullyQualifiedMethodName
public java.lang.String getFullyQualifiedMethodName()
If currently visiting a method, get the method's fully qualified name
-
visitingMethod
public boolean visitingMethod()
is the visitor currently visiting a method?
-
visitingField
public boolean visitingField()
is the visitor currently visiting a field?
-
getField
public org.apache.bcel.classfile.Field getField()
If currently visiting a method, get the method's Method object
-
getMethod
public org.apache.bcel.classfile.Method getMethod()
If currently visiting a method, get the method's Method object
-
getMethodName
public java.lang.String getMethodName()
If currently visiting a method, get the method's name
-
getNumberArguments
public static int getNumberArguments(java.lang.String signature)
-
getNumberMethodArguments
public int getNumberMethodArguments()
-
getMethodSig
public java.lang.String getMethodSig()
If currently visiting a method, get the method's slash-formatted signature
-
getDottedMethodSig
public java.lang.String getDottedMethodSig()
If currently visiting a method, get the method's dotted method signature
-
getFieldName
public java.lang.String getFieldName()
If currently visiting a field, get the field's name
-
getFieldSig
public java.lang.String getFieldSig()
If currently visiting a field, get the field's slash-formatted signature
-
getFieldIsStatic
public boolean getFieldIsStatic()
If currently visiting a field, return whether or not the field is static
-
getFullyQualifiedFieldName
public java.lang.String getFullyQualifiedFieldName()
If currently visiting a field, get the field's fully qualified name
-
getDottedFieldSig
@Deprecated public java.lang.String getDottedFieldSig()
Deprecated.If currently visiting a field, get the field's dot-formatted signature
-
-