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 TypeMethodDescriptionboolean
protected int
asUnsignedByte
(byte b) void
doVisitMethod
(org.apache.bcel.classfile.Method method) 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
Get 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.Field
getField()
If currently visiting a field, get the field's Field objectboolean
If 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.Method
If 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 int
getNumberArguments
(String signature) int
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
(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 String
getStringFromIndex
(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.CodeException
getSurroundingTryBlock
(int pc) org.apache.bcel.classfile.CodeException
getSurroundingTryBlock
(String vmNameOfExceptionClass, int pc) org.apache.bcel.classfile.JavaClass
Get the JavaClass object for the current or most recently visited classstatic boolean
hasInterestingClass
(org.apache.bcel.classfile.ConstantPool cp, Collection<String> classes) 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 classesprotected boolean
void
setupVisitorForClass
(org.apache.bcel.classfile.JavaClass obj) protected void
setVisitMethodsInCallOrder
(boolean visitMethodsInCallOrder) boolean
shouldVisit
(org.apache.bcel.classfile.JavaClass obj) toString()
void
visitAfter
(org.apache.bcel.classfile.Code obj) Called after visiting a code attributevoid
visitAfter
(org.apache.bcel.classfile.JavaClass obj) void
visitAnnotation
(org.apache.bcel.classfile.Annotations arg0) void
visitAnnotationDefault
(org.apache.bcel.classfile.AnnotationDefault arg0) void
visitAnnotationEntry
(org.apache.bcel.classfile.AnnotationEntry arg0) void
visitCode
(org.apache.bcel.classfile.Code obj) void
visitConstantPool
(org.apache.bcel.classfile.ConstantPool obj) void
visitEnclosingMethod
(org.apache.bcel.classfile.EnclosingMethod arg0) boolean
is the visitor currently visiting a field?boolean
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) void
visitParameterAnnotation
(org.apache.bcel.classfile.ParameterAnnotations arg0) void
visitStackMapTable
(org.apache.bcel.classfile.StackMapTable arg0) void
visitStackMapTableEntry
(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:
visitCode
in interfaceorg.apache.bcel.classfile.Visitor
- Overrides:
visitCode
in 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:
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) -
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:
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
-
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:
visitAnnotation
in interfaceorg.apache.bcel.classfile.Visitor
-
visitAnnotationDefault
public void visitAnnotationDefault(org.apache.bcel.classfile.AnnotationDefault arg0) - Specified by:
visitAnnotationDefault
in interfaceorg.apache.bcel.classfile.Visitor
-
visitAnnotationEntry
public void visitAnnotationEntry(org.apache.bcel.classfile.AnnotationEntry arg0) - Specified by:
visitAnnotationEntry
in interfaceorg.apache.bcel.classfile.Visitor
-
visitEnclosingMethod
public void visitEnclosingMethod(org.apache.bcel.classfile.EnclosingMethod arg0) - Specified by:
visitEnclosingMethod
in interfaceorg.apache.bcel.classfile.Visitor
-
visitParameterAnnotation
public void visitParameterAnnotation(org.apache.bcel.classfile.ParameterAnnotations arg0) - Specified by:
visitParameterAnnotation
in interfaceorg.apache.bcel.classfile.Visitor
-
visitStackMapTable
public void visitStackMapTable(org.apache.bcel.classfile.StackMapTable arg0) - Specified by:
visitStackMapTable
in interfaceorg.apache.bcel.classfile.Visitor
-
visitStackMapTableEntry
public void visitStackMapTableEntry(org.apache.bcel.classfile.StackMapTableEntry arg0) - Specified by:
visitStackMapTableEntry
in interfaceorg.apache.bcel.classfile.Visitor
-