Class SerializableIdiom

All Implemented Interfaces:
Detector, Priorities, org.apache.bcel.classfile.Visitor

public class SerializableIdiom extends OpcodeStackDetector
  • 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

      private final BugReporter bugReporter
    • isAbstract

      boolean isAbstract
    • fieldWarningList

      private final List<BugInstance> fieldWarningList
    • fieldsThatMightBeAProblem

      private final HashMap<String,XField> fieldsThatMightBeAProblem
    • transientFieldsUpdates

      private final HashMap<XField,Integer> transientFieldsUpdates
    • transientFieldsSetInConstructor

      private final HashSet<XField> transientFieldsSetInConstructor
    • transientFieldsSetToDefaultValueInConstructor

      private final HashSet<XField> transientFieldsSetToDefaultValueInConstructor
    • optionalBugsInReadExternal

      private final Map<XField,BugInstance> optionalBugsInReadExternal
    • initializedCheckerVariables

      private Set<XField> 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

      static final Pattern anonymousInnerClassNamePattern
    • isAnonymousInnerClass

      boolean isAnonymousInnerClass
    • innerClassHasOuterInstance

      boolean innerClassHasOuterInstance
    • isEnum

      private boolean isEnum
  • Constructor Details

    • SerializableIdiom

      public SerializableIdiom(BugReporter bugReporter)
  • Method Details

    • visitClassContext

      public void visitClassContext(ClassContext classContext)
      Description copied from interface: Detector
      Visit the ClassContext for a class which should be analyzed for instances of bug patterns.
      Specified by:
      visitClassContext in interface Detector
      Overrides:
      visitClassContext in class BytecodeScanningDetector
      Parameters:
      classContext - the ClassContext
    • flush

      private void flush()
    • visit

      public void visit(org.apache.bcel.classfile.JavaClass obj)
      Overrides:
      visit in class BetterVisitor
    • strongEvidenceForIntendedSerialization

      private boolean strongEvidenceForIntendedSerialization()
    • visitAfter

      public void visitAfter(org.apache.bcel.classfile.JavaClass obj)
      Overrides:
      visitAfter in class PreorderVisitor
    • visit

      public void visit(org.apache.bcel.classfile.Method obj)
      Overrides:
      visit in class BetterVisitor
    • isSynthetic

      boolean isSynthetic(org.apache.bcel.classfile.FieldOrMethod obj)
    • visit

      public void visit(org.apache.bcel.classfile.Code obj)
      Overrides:
      visit in class DismantleBytecode
    • sawOpcode

      public void sawOpcode(int seen)
      Description copied from class: OpcodeStackDetector

      By 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:
      sawOpcode in class OpcodeStackDetector
      See Also:
    • visit

      public void visit(org.apache.bcel.classfile.Field obj)
      Overrides:
      visit in class BetterVisitor
    • computePriority

      private int computePriority(double isSerializable, double bias)