Class PreorderVisitor

    • 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()  
    • Constructor Detail

      • PreorderVisitor

        public PreorderVisitor()
    • 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:
        visitCode in interface org.apache.bcel.classfile.Visitor
        Overrides:
        visitCode in class BetterVisitor
      • 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 interface org.apache.bcel.classfile.Visitor
        Overrides:
        visitConstantPool in class BetterVisitor
      • 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 interface org.apache.bcel.classfile.Visitor
        Overrides:
        visitInnerClasses in class BetterVisitor
      • 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:
        visitJavaClass in interface org.apache.bcel.classfile.Visitor
        Overrides:
        visitJavaClass in class BetterVisitor
      • setupVisitorForClass

        public void setupVisitorForClass​(org.apache.bcel.classfile.JavaClass obj)
      • visitLineNumberTable

        public void visitLineNumberTable​(org.apache.bcel.classfile.LineNumberTable obj)
        Specified by:
        visitLineNumberTable in interface org.apache.bcel.classfile.Visitor
        Overrides:
        visitLineNumberTable in class BetterVisitor
      • visitLocalVariableTable

        public void visitLocalVariableTable​(org.apache.bcel.classfile.LocalVariableTable obj)
        Specified by:
        visitLocalVariableTable in interface org.apache.bcel.classfile.Visitor
        Overrides:
        visitLocalVariableTable in class BetterVisitor
      • getXClass

        public XClass getXClass()
      • getXMethod

        public XMethod getXMethod()
      • getXField

        public XField getXField()
      • 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 pool
        methods - 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:
        toString in class java.lang.Object
      • visitAnnotation

        public void visitAnnotation​(org.apache.bcel.classfile.Annotations arg0)
        Specified by:
        visitAnnotation in interface org.apache.bcel.classfile.Visitor
      • visitAnnotationDefault

        public void visitAnnotationDefault​(org.apache.bcel.classfile.AnnotationDefault arg0)
        Specified by:
        visitAnnotationDefault in interface org.apache.bcel.classfile.Visitor
      • visitAnnotationEntry

        public void visitAnnotationEntry​(org.apache.bcel.classfile.AnnotationEntry arg0)
        Specified by:
        visitAnnotationEntry in interface org.apache.bcel.classfile.Visitor
      • visitEnclosingMethod

        public void visitEnclosingMethod​(org.apache.bcel.classfile.EnclosingMethod arg0)
        Specified by:
        visitEnclosingMethod in interface org.apache.bcel.classfile.Visitor
      • visitParameterAnnotation

        public void visitParameterAnnotation​(org.apache.bcel.classfile.ParameterAnnotations arg0)
        Specified by:
        visitParameterAnnotation in interface org.apache.bcel.classfile.Visitor
      • visitStackMapTable

        public void visitStackMapTable​(org.apache.bcel.classfile.StackMapTable arg0)
        Specified by:
        visitStackMapTable in interface org.apache.bcel.classfile.Visitor
      • visitStackMapTableEntry

        public void visitStackMapTableEntry​(org.apache.bcel.classfile.StackMapTableEntry arg0)
        Specified by:
        visitStackMapTableEntry in interface org.apache.bcel.classfile.Visitor