Class FindOverridableMethodCall
- All Implemented Interfaces:
Detector, Priorities, org.apache.bcel.classfile.Visitor
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final BugAccumulatorprivate final Map<XMethod, FindOverridableMethodCall.CallerInfo> private final Map<XMethod, FindOverridableMethodCall.CallerInfo> private final Map<XMethod, FindOverridableMethodCall.CallerInfo> private static final Stringprivate static final Stringprivate static final Stringprivate final Map<Integer, FindOverridableMethodCall.CallerInfo> private final Map<Integer, FindOverridableMethodCall.CallerInfo> private final Map<Integer, FindOverridableMethodCall.CallerInfo> Fields inherited from class OpcodeStackDetector
stackFields inherited from class DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTFields inherited from interface Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidcheckAndRecordCallBetweenNonOverridableMethods(XMethod caller, XMethod callee) private voidcheckAndRecordCallFromClone(XMethod clone, XMethod callee, SourceLineAnnotation sourceLine) private voidcheckAndRecordCallFromConstructor(XMethod constructor, XMethod callee, SourceLineAnnotation sourceLine) private voidcheckAndRecordCallFromReadObject(XMethod readObject, XMethod callee, SourceLineAnnotation sourceLine) private voidcheckAndRecordCallToOverridable(XMethod caller, XMethod overridable) (package private) booleancheckAndRecordDirectCase(XMethod caller, XMethod method, String bugType, int priority, SourceLineAnnotation sourceLine) getIndirectCallerClone(XMethod callee) getIndirectCallerConstructor(XMethod callee) getIndirectCallerReadObject(XMethod callee) getIndirectCallerSpecial(XMethod callee, Map<XMethod, FindOverridableMethodCall.CallerInfo> map, Set<XMethod> visited) private XMethodprivate XMethodgetIndirectlyCalledOverridable(XMethod caller, Set<XMethod> visited) private booleanprivate booleanisSelfCall(XMethod method) voidsawOpcode(int seen) By default, this method will not be called when stack is TOP.private XMethodsuperClone(XClass clazz) voidvisit(org.apache.bcel.classfile.JavaClass obj) voidvisitAfter(org.apache.bcel.classfile.JavaClass obj) voidvisitBootstrapMethods(org.apache.bcel.classfile.BootstrapMethods obj) Methods inherited from class OpcodeStackDetector
afterOpcode, beforeOpcode, getStack, isUsingCustomUserValue, visitCodeMethods inherited from class BytecodeScanningDetector
getClassContext, report, shouldVisitCode, visitClassContextMethods inherited from class DismantleBytecode
areOppositeBranches, atCatchBlock, getBranchFallThrough, getBranchOffset, getBranchTarget, getClassConstantOperand, getClassDescriptorOperand, getCodeByte, getConstantRefOperand, getDefaultSwitchOffset, getDottedClassConstantOperand, getFieldDescriptorOperand, getIntConstant, getLongConstant, getMaxPC, getMethodDescriptorOperand, getNameConstantOperand, getNextCodeByte, getNextOpcode, getNextPC, getOpcode, getPC, getPrevOpcode, getRefConstantOperand, getRefFieldIsStatic, getRegisterOperand, getSigConstantOperand, getStringConstantOperand, getSwitchLabels, getSwitchOffsets, getXClassOperand, getXFieldOperand, getXMethodOperand, isBranch, isMethodCall, isRegisterLoad, isRegisterStore, isRegisterStore, isReturn, isShift, isSwitch, isWideOpcode, printOpCode, sawBranchTo, sawClass, sawDouble, sawField, sawFloat, sawIMethod, sawInt, sawLong, sawMethod, sawRegister, sawString, visitMethods inherited from class AnnotationVisitor
getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationMethods inherited from class PreorderVisitor
amVisitingMainMethod, asUnsignedByte, doVisitMethod, getClassDescriptor, getClassName, getCode, getConstantPool, getDottedClassName, getDottedFieldSig, getDottedMethodSig, getDottedSuperclassName, getField, getFieldDescriptor, getFieldIsStatic, getFieldName, getFieldSig, getFullyQualifiedFieldName, getFullyQualifiedMethodName, getMethod, getMethodDescriptor, getMethodName, getMethodSig, getMethodVisitOrder, getNumberArguments, getNumberMethodArguments, getPackageName, getSizeOfSurroundingTryBlock, getSizeOfSurroundingTryBlock, getSourceFile, getStringFromIndex, getSuperclassName, getSurroundingCaughtExceptions, getSurroundingCaughtExceptions, getSurroundingCaughtExceptionTypes, getSurroundingTryBlock, getSurroundingTryBlock, getThisClass, getXClass, getXField, getXMethod, hasInterestingClass, hasInterestingMethod, isVisitMethodsInCallOrder, setupVisitorForClass, setVisitMethodsInCallOrder, shouldVisit, toString, visitAfter, visitAnnotationDefault, visitAnnotationEntry, visitConstantInvokeDynamic, visitConstantMethodHandle, visitConstantMethodType, visitConstantModule, visitConstantPackage, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitMethodParameters, visitParameterAnnotationEntry, visitStackMap, visitStackMapEntryMethods inherited from class 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, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitSynthetic, visitUnknownMethods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.bcel.classfile.Visitor
visitConstantDynamic, visitMethodParameter, visitModule, visitModuleExports, visitModuleMainClass, visitModuleOpens, visitModulePackages, visitModuleProvides, visitModuleRequires, visitNestHost, visitNestMembers, visitRecord, visitRecordComponent, visitStackMapType
-
Field Details
-
callerConstructors
-
callerClones
-
callerReadObjects
-
callsToOverridable
-
callerToCalleeMap
-
calleeToCallerMap
-
refCallerConstructors
-
refCallerClones
-
refCallerReadObjects
-
refCalleeToCallerMap
-
CONSTRUCTOR_BUG
- See Also:
-
CLONE_BUG
- See Also:
-
READ_OBJECT_BUG
- See Also:
-
bugAccumulator
-
-
Constructor Details
-
FindOverridableMethodCall
-
-
Method Details
-
visit
public void visit(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitin classBetterVisitor
-
visitBootstrapMethods
public void visitBootstrapMethods(org.apache.bcel.classfile.BootstrapMethods obj) - Specified by:
visitBootstrapMethodsin interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitBootstrapMethodsin classPreorderVisitor
-
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitAfterin classPreorderVisitor
-
sawOpcode
public void sawOpcode(int seen) Description copied from class:OpcodeStackDetectorBy default, this method will not be called when stack is TOP. To change this behavior, override
#beforeOpcode(int)and change to return true even if stack is TOP.see Using FindBugs for Research to learn lattice and what TOP means.
- Specified by:
sawOpcodein classOpcodeStackDetector- See Also:
-
isCurrentMethodReadObject
private boolean isCurrentMethodReadObject() -
superClone
-
checkAndRecordDirectCase
boolean checkAndRecordDirectCase(XMethod caller, XMethod method, String bugType, int priority, SourceLineAnnotation sourceLine) -
isSelfCall
-
checkAndRecordCallFromConstructor
private void checkAndRecordCallFromConstructor(XMethod constructor, XMethod callee, SourceLineAnnotation sourceLine) -
checkAndRecordCallFromClone
private void checkAndRecordCallFromClone(XMethod clone, XMethod callee, SourceLineAnnotation sourceLine) -
checkAndRecordCallFromReadObject
private void checkAndRecordCallFromReadObject(XMethod readObject, XMethod callee, SourceLineAnnotation sourceLine) -
checkAndRecordCallToOverridable
-
checkAndRecordCallBetweenNonOverridableMethods
-
getIndirectlyCalledOverridable
-
getIndirectlyCalledOverridable
-
getIndirectCallerConstructor
-
getIndirectCallerClone
-
getIndirectCallerReadObject
-
getIndirectCallerSpecial
private FindOverridableMethodCall.CallerInfo getIndirectCallerSpecial(XMethod callee, Map<XMethod, FindOverridableMethodCall.CallerInfo> map) -
getIndirectCallerSpecial
private FindOverridableMethodCall.CallerInfo getIndirectCallerSpecial(XMethod callee, Map<XMethod, FindOverridableMethodCall.CallerInfo> map, Set<XMethod> visited)
-