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
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 -
Method Summary
Modifier and TypeMethodDescriptionbooleanprotected intasUnsignedByte(byte b) voiddoVisitMethod(org.apache.bcel.classfile.Method method) 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.ConstantPoolGet the constant pool for the current or most recently visited classGet the dotted class name for the current or most recently visited classDeprecated.If currently visiting a method, get the method's dotted method signatureGet 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 objectbooleanIf currently visiting a field, return whether or not the field is staticIf currently visiting a field, get the field's nameIf currently visiting a field, get the field's slash-formatted signatureIf currently visiting a field, get the field's fully qualified nameIf currently visiting a method, get the method's fully qualified nameorg.apache.bcel.classfile.MethodIf currently visiting a method, get the method's Method objectIf currently visiting a method, get the method's nameIf currently visiting a method, get the method's slash-formatted signatureprotected Iterable<org.apache.bcel.classfile.Method> getMethodVisitOrder(org.apache.bcel.classfile.JavaClass obj) static intgetNumberArguments(String signature) intGet 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(String vmNameOfExceptionClass, int pc) Get lines of code in try block that surround pcGet the source file name for the current or most recently visited classprotected StringgetStringFromIndex(int i) Get the slash-formatted superclass name for the current or most recently visited classgetSurroundingCaughtExceptions(int pc) getSurroundingCaughtExceptions(int pc, int maxTryBlockSize) org.apache.bcel.classfile.CodeExceptiongetSurroundingTryBlock(int pc) org.apache.bcel.classfile.CodeExceptiongetSurroundingTryBlock(String vmNameOfExceptionClass, int pc) org.apache.bcel.classfile.JavaClassGet the JavaClass object for the current or most recently visited classstatic booleanhasInterestingClass(org.apache.bcel.classfile.ConstantPool cp, Collection<String> classes) static booleanhasInterestingMethod(org.apache.bcel.classfile.ConstantPool cp, 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 booleanvoidsetupVisitorForClass(org.apache.bcel.classfile.JavaClass obj) protected voidsetVisitMethodsInCallOrder(boolean visitMethodsInCallOrder) booleanshouldVisit(org.apache.bcel.classfile.JavaClass obj) toString()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) booleanis the visitor currently visiting a field?booleanis 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
-
Constructor Details
-
PreorderVisitor
public PreorderVisitor()
-
-
Method Details
-
getStringFromIndex
-
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
-
getSurroundingCaughtExceptions
-
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
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(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 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
-
getClassDescriptor
-
getXMethod
-
getMethodDescriptor
-
getXField
-
getFieldDescriptor
-
getConstantPool
public org.apache.bcel.classfile.ConstantPool getConstantPool()Get the constant pool for the current or most recently visited class -
getClassName
Get the slash-formatted class name for the current or most recently visited class -
getDottedClassName
Get the dotted class name for the current or most recently visited class -
getPackageName
Get the (slash-formatted?) package name for the current or most recently visited class -
getSourceFile
Get the source file name for the current or most recently visited class -
getSuperclassName
Get the slash-formatted superclass name for the current or most recently visited class -
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
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
If currently visiting a method, get the method's name -
getNumberArguments
-
hasInterestingMethod
public static boolean hasInterestingMethod(org.apache.bcel.classfile.ConstantPool cp, 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, Collection<String> classes) -
getNumberMethodArguments
public int getNumberMethodArguments() -
getMethodSig
If currently visiting a method, get the method's slash-formatted signature -
getDottedMethodSig
If currently visiting a method, get the method's dotted method signature -
getFieldName
If currently visiting a field, get the field's name -
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
If currently visiting a field, get the field's fully qualified name -
getDottedFieldSig
Deprecated.If currently visiting a field, get the field's dot-formatted signature -
toString
-
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
-