Class SerializableIdiom
- All Implemented Interfaces:
Detector, Priorities, org.apache.bcel.classfile.Visitor
-
Nested Class Summary
Nested classes/interfaces inherited from class OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo -
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final Patternprivate final BugReporterprivate static final booleanprivate booleanprivate final List<BugInstance> (package private) boolean(package private) booleanprivate boolean(package private) booleanprivate int(package private) boolean(package private) boolean(package private) boolean(package private) booleanprivate boolean(package private) boolean(package private) boolean(package private) boolean(package private) boolean(package private) booleanprivate final Map<XField, BugInstance> (package private) static final booleanprivate booleanprivate booleanprivate booleanprivate booleanprivate boolean(package private) booleanprivate booleanprivate boolean(package private) booleanprivate booleanprivate booleanprivate booleanprivate final boolean(package private) booleanFields 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 intcomputePriority(double isSerializable, double bias) private voidflush()(package private) booleanisSynthetic(org.apache.bcel.classfile.FieldOrMethod obj) voidsawOpcode(int seen) By default, this method will not be called when stack is TOP.private booleanvoidvisit(org.apache.bcel.classfile.Code obj) voidvisit(org.apache.bcel.classfile.Field obj) voidvisit(org.apache.bcel.classfile.JavaClass obj) voidvisit(org.apache.bcel.classfile.Method obj) voidvisitAfter(org.apache.bcel.classfile.JavaClass obj) voidvisitClassContext(ClassContext classContext) Visit the ClassContext for a class which should be analyzed for instances of bug patterns.Methods inherited from class OpcodeStackDetector
afterOpcode, beforeOpcode, getStack, isUsingCustomUserValue, visitCodeMethods inherited from class BytecodeScanningDetector
getClassContext, report, shouldVisitCodeMethods 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, sawStringMethods 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, visitBootstrapMethods, 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, 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
-
DEBUG
private static final boolean DEBUG -
reportTransientFieldOfNonSerializableClass
static final boolean reportTransientFieldOfNonSerializableClass -
sawSerialVersionUID
boolean sawSerialVersionUID -
isSerializable
boolean isSerializable -
implementsSerializableDirectly
boolean implementsSerializableDirectly -
isExternalizable
boolean isExternalizable -
isGUIClass
boolean isGUIClass -
isEjbImplClass
boolean isEjbImplClass -
isJSPClass
boolean isJSPClass -
isRecord
boolean isRecord -
foundSynthetic
boolean foundSynthetic -
seenTransientField
boolean seenTransientField -
foundSynchronizedMethods
boolean foundSynchronizedMethods -
writeObjectIsSynchronized
boolean writeObjectIsSynchronized -
bugReporter
-
isAbstract
boolean isAbstract -
fieldWarningList
-
fieldsThatMightBeAProblem
-
transientFieldsUpdates
-
transientFieldsSetInConstructor
-
transientFieldsSetToDefaultValueInConstructor
-
optionalBugsInReadExternal
-
initializedCheckerVariables
-
initializeCheckerBranchTarget
private int initializeCheckerBranchTarget -
sawReadExternalBranchExit
private boolean sawReadExternalBranchExit -
sawReadExternalExit
private boolean sawReadExternalExit -
sawReadExternal
private boolean sawReadExternal -
sawWriteExternal
private boolean sawWriteExternal -
sawReadObject
private boolean sawReadObject -
sawReadResolve
private boolean sawReadResolve -
sawWriteObject
private boolean sawWriteObject -
superClassImplementsSerializable
private boolean superClassImplementsSerializable -
superClassHasReadObject
private boolean superClassHasReadObject -
hasPublicVoidConstructor
private boolean hasPublicVoidConstructor -
superClassHasVoidConstructor
private boolean superClassHasVoidConstructor -
directlyImplementsExternalizable
private boolean directlyImplementsExternalizable -
testingEnabled
private final boolean testingEnabled -
anonymousInnerClassNamePattern
-
isAnonymousInnerClass
boolean isAnonymousInnerClass -
innerClassHasOuterInstance
boolean innerClassHasOuterInstance -
isEnum
private boolean isEnum
-
-
Constructor Details
-
SerializableIdiom
-
-
Method Details
-
visitClassContext
Description copied from interface:DetectorVisit the ClassContext for a class which should be analyzed for instances of bug patterns.- Specified by:
visitClassContextin interfaceDetector- Overrides:
visitClassContextin classBytecodeScanningDetector- Parameters:
classContext- the ClassContext
-
flush
private void flush() -
visit
public void visit(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitin classBetterVisitor
-
strongEvidenceForIntendedSerialization
private boolean strongEvidenceForIntendedSerialization() -
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitAfterin classPreorderVisitor
-
visit
public void visit(org.apache.bcel.classfile.Method obj) - Overrides:
visitin classBetterVisitor
-
isSynthetic
boolean isSynthetic(org.apache.bcel.classfile.FieldOrMethod obj) -
visit
public void visit(org.apache.bcel.classfile.Code obj) - Overrides:
visitin classDismantleBytecode
-
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:
-
visit
public void visit(org.apache.bcel.classfile.Field obj) - Overrides:
visitin classBetterVisitor
-
computePriority
private int computePriority(double isSerializable, double bias)
-