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,TrainLongInstantfParams
public 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_SYPER, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, APPEND_FRAME, APPEND_FRAME_MAX, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_ENCLOSING_METHOD, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_LOCAL_VARIABLE_TYPE_TABLE, ATTR_PMG, ATTR_RUNTIME_VISIBLE_ANNOTATIONS, ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEIN_VISIBLE_ANNOTATIONS, ATTR_RUNTIMEIN_VISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_STACK_MAP_TABLE, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CHOP_FRAME, CHOP_FRAME_MAX, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_InvokeDynamic, CONSTANT_Long, CONSTANT_MethodHandle, CONSTANT_Methodref, CONSTANT_MethodType, 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, FULL_FRAME, 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, INVOKEDYNAMIC, 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, MAJOR_1_6, MAJOR_1_7, MAJOR_1_8, 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, MINOR_1_6, MINOR_1_7, MINOR_1_8, 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, SAME_FRAME, SAME_FRAME_EXTENDED, SAME_FRAME_MAX, SAME_LOCALS_1_STACK_ITEM_FRAME, SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED, SAME_LOCALS_1_STACK_ITEM_FRAME_MAX, 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 booleanamVisitingMainMethod()protected intasUnsignedByte(byte b)voiddoVisitMethod(org.apache.bcel.classfile.Method method)ClassDescriptorgetClassDescriptor()java.lang.StringgetClassName()Get the slash-formatted class name for the current or most recently visited classorg.apache.bcel.classfile.CodegetCode()Return the current Code attribute; assuming one is being visitedorg.apache.bcel.classfile.ConstantPoolgetConstantPool()Get the constant pool for the current or most recently visited classjava.lang.StringgetDottedClassName()Get the dotted class name for the current or most recently visited classjava.lang.StringgetDottedFieldSig()Deprecated.java.lang.StringgetDottedMethodSig()If currently visiting a method, get the method's dotted method signaturejava.lang.StringgetDottedSuperclassName()Get the dotted superclass name for the current or most recently visited classorg.apache.bcel.classfile.FieldgetField()If currently visiting a field, get the field's Field objectFieldDescriptorgetFieldDescriptor()booleangetFieldIsStatic()If currently visiting a field, return whether or not the field is staticjava.lang.StringgetFieldName()If currently visiting a field, get the field's namejava.lang.StringgetFieldSig()If currently visiting a field, get the field's slash-formatted signaturejava.lang.StringgetFullyQualifiedFieldName()If currently visiting a field, get the field's fully qualified namejava.lang.StringgetFullyQualifiedMethodName()If currently visiting a method, get the method's fully qualified nameorg.apache.bcel.classfile.MethodgetMethod()If currently visiting a method, get the method's Method objectMethodDescriptorgetMethodDescriptor()java.lang.StringgetMethodName()If currently visiting a method, get the method's namejava.lang.StringgetMethodSig()If currently visiting a method, get the method's slash-formatted signatureprotected java.lang.Iterable<org.apache.bcel.classfile.Method>getMethodVisitOrder(org.apache.bcel.classfile.JavaClass obj)static intgetNumberArguments(java.lang.String signature)intgetNumberMethodArguments()java.lang.StringgetPackageName()Get the (slash-formatted?) package name for the current or most recently visited classintgetSizeOfSurroundingTryBlock(int pc)Get lines of code in try block that surround pcintgetSizeOfSurroundingTryBlock(java.lang.String vmNameOfExceptionClass, int pc)Get lines of code in try block that surround pcjava.lang.StringgetSourceFile()Get the source file name for the current or most recently visited classprotected java.lang.StringgetStringFromIndex(int i)java.lang.StringgetSuperclassName()Get the slash-formatted superclass name for the current or most recently visited classjava.util.Set<java.lang.String>getSurroundingCaughtExceptions(int pc)java.util.Set<java.lang.String>getSurroundingCaughtExceptions(int pc, int maxTryBlockSize)org.apache.bcel.classfile.CodeExceptiongetSurroundingTryBlock(int pc)org.apache.bcel.classfile.CodeExceptiongetSurroundingTryBlock(java.lang.String vmNameOfExceptionClass, int pc)org.apache.bcel.classfile.JavaClassgetThisClass()Get the JavaClass object for the current or most recently visited classXClassgetXClass()XFieldgetXField()XMethodgetXMethod()static booleanhasInterestingClass(org.apache.bcel.classfile.ConstantPool cp, java.util.Collection<java.lang.String> classes)static booleanhasInterestingMethod(org.apache.bcel.classfile.ConstantPool cp, java.util.Collection<MethodDescriptor> methods)Returns true if given constant pool probably has a reference to any of supplied methods Useful to exclude from analysis uninteresting classesprotected booleanisVisitMethodsInCallOrder()voidsetupVisitorForClass(org.apache.bcel.classfile.JavaClass obj)protected voidsetVisitMethodsInCallOrder(boolean visitMethodsInCallOrder)booleanshouldVisit(org.apache.bcel.classfile.JavaClass obj)java.lang.StringtoString()voidvisitAfter(org.apache.bcel.classfile.Code obj)Called after visiting a code attributevoidvisitAfter(org.apache.bcel.classfile.JavaClass obj)voidvisitAnnotation(org.apache.bcel.classfile.Annotations arg0)voidvisitAnnotationDefault(org.apache.bcel.classfile.AnnotationDefault arg0)voidvisitAnnotationEntry(org.apache.bcel.classfile.AnnotationEntry arg0)voidvisitCode(org.apache.bcel.classfile.Code obj)voidvisitConstantPool(org.apache.bcel.classfile.ConstantPool obj)voidvisitEnclosingMethod(org.apache.bcel.classfile.EnclosingMethod arg0)booleanvisitingField()is the visitor currently visiting a field?booleanvisitingMethod()is the visitor currently visiting a method?voidvisitInnerClasses(org.apache.bcel.classfile.InnerClasses obj)voidvisitJavaClass(org.apache.bcel.classfile.JavaClass obj)voidvisitLineNumberTable(org.apache.bcel.classfile.LineNumberTable obj)voidvisitLocalVariableTable(org.apache.bcel.classfile.LocalVariableTable obj)voidvisitParameterAnnotation(org.apache.bcel.classfile.ParameterAnnotations arg0)voidvisitStackMapTable(org.apache.bcel.classfile.StackMapTable arg0)voidvisitStackMapTableEntry(org.apache.bcel.classfile.StackMapTableEntry arg0)-
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)
-
getSurroundingCaughtExceptions
public java.util.Set<java.lang.String> getSurroundingCaughtExceptions(int pc, int maxTryBlockSize)
-
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
-
getSurroundingTryBlock
public org.apache.bcel.classfile.CodeException getSurroundingTryBlock(int pc)
-
getSurroundingTryBlock
public org.apache.bcel.classfile.CodeException getSurroundingTryBlock(java.lang.String vmNameOfExceptionClass, int pc)
-
visitCode
public void visitCode(org.apache.bcel.classfile.Code obj)
- Specified by:
visitCodein interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitCodein classBetterVisitor
-
visitAfter
public void visitAfter(org.apache.bcel.classfile.Code obj)
Called after visiting a code attribute- Parameters:
obj- Code that was just visited
-
visitConstantPool
public void visitConstantPool(org.apache.bcel.classfile.ConstantPool obj)
- Specified by:
visitConstantPoolin interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitConstantPoolin 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:
visitInnerClassesin interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitInnerClassesin classBetterVisitor
-
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj)
-
shouldVisit
public boolean shouldVisit(org.apache.bcel.classfile.JavaClass obj)
-
isVisitMethodsInCallOrder
protected boolean isVisitMethodsInCallOrder()
-
setVisitMethodsInCallOrder
protected void setVisitMethodsInCallOrder(boolean visitMethodsInCallOrder)
-
getMethodVisitOrder
protected java.lang.Iterable<org.apache.bcel.classfile.Method> getMethodVisitOrder(org.apache.bcel.classfile.JavaClass obj)
-
visitJavaClass
public void visitJavaClass(org.apache.bcel.classfile.JavaClass obj)
- Specified by:
visitJavaClassin interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitJavaClassin classBetterVisitor
-
setupVisitorForClass
public void setupVisitorForClass(org.apache.bcel.classfile.JavaClass obj)
-
visitLineNumberTable
public void visitLineNumberTable(org.apache.bcel.classfile.LineNumberTable obj)
- Specified by:
visitLineNumberTablein interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitLineNumberTablein classBetterVisitor
-
visitLocalVariableTable
public void visitLocalVariableTable(org.apache.bcel.classfile.LocalVariableTable obj)
- Specified by:
visitLocalVariableTablein interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitLocalVariableTablein 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 field, get the field's Field 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)
-
hasInterestingMethod
public static boolean hasInterestingMethod(org.apache.bcel.classfile.ConstantPool cp, java.util.Collection<MethodDescriptor> methods)Returns true if given constant pool probably has a reference to any of supplied methods Useful to exclude from analysis uninteresting classes- Parameters:
cp- constant poolmethods- methods collection- Returns:
- true if method is found
-
hasInterestingClass
public static boolean hasInterestingClass(org.apache.bcel.classfile.ConstantPool cp, java.util.Collection<java.lang.String> classes)
-
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
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
visitAnnotation
public void visitAnnotation(org.apache.bcel.classfile.Annotations arg0)
- Specified by:
visitAnnotationin interfaceorg.apache.bcel.classfile.Visitor
-
visitAnnotationDefault
public void visitAnnotationDefault(org.apache.bcel.classfile.AnnotationDefault arg0)
- Specified by:
visitAnnotationDefaultin interfaceorg.apache.bcel.classfile.Visitor
-
visitAnnotationEntry
public void visitAnnotationEntry(org.apache.bcel.classfile.AnnotationEntry arg0)
- Specified by:
visitAnnotationEntryin interfaceorg.apache.bcel.classfile.Visitor
-
visitEnclosingMethod
public void visitEnclosingMethod(org.apache.bcel.classfile.EnclosingMethod arg0)
- Specified by:
visitEnclosingMethodin interfaceorg.apache.bcel.classfile.Visitor
-
visitParameterAnnotation
public void visitParameterAnnotation(org.apache.bcel.classfile.ParameterAnnotations arg0)
- Specified by:
visitParameterAnnotationin interfaceorg.apache.bcel.classfile.Visitor
-
visitStackMapTable
public void visitStackMapTable(org.apache.bcel.classfile.StackMapTable arg0)
- Specified by:
visitStackMapTablein interfaceorg.apache.bcel.classfile.Visitor
-
visitStackMapTableEntry
public void visitStackMapTableEntry(org.apache.bcel.classfile.StackMapTableEntry arg0)
- Specified by:
visitStackMapTableEntryin interfaceorg.apache.bcel.classfile.Visitor
-
-