Class LocalHangingExecutor

java.lang.Object
edu.umd.cs.findbugs.visitclass.BetterVisitor
edu.umd.cs.findbugs.visitclass.PreorderVisitor
edu.umd.cs.findbugs.visitclass.AnnotationVisitor
edu.umd.cs.findbugs.visitclass.DismantleBytecode
edu.umd.cs.findbugs.BytecodeScanningDetector
com.mebigfatguy.fbcontrib.detect.LocalTypeDetector
com.mebigfatguy.fbcontrib.detect.LocalHangingExecutor
All Implemented Interfaces:
edu.umd.cs.findbugs.Detector, edu.umd.cs.findbugs.Priorities, org.apache.bcel.classfile.Visitor

class LocalHangingExecutor extends LocalTypeDetector
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.mebigfatguy.fbcontrib.detect.LocalTypeDetector

    LocalTypeDetector.RegisterInfo
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final edu.umd.cs.findbugs.BugReporter
     
    private final edu.umd.cs.findbugs.Detector
     
    private static final Map<String,Integer>
     
    private static final Map<String,Set<String>>
     

    Fields inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode

    codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINT

    Fields inherited from interface edu.umd.cs.findbugs.Priorities

    EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
  • Constructor Summary

    Constructors
    Constructor
    Description
    LocalHangingExecutor(edu.umd.cs.findbugs.Detector delegatingDetector, edu.umd.cs.findbugs.BugReporter reporter)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected Set<String>
    returns a set of self returning methods, that is, methods that when called on a a synchronized collection return themselves.
    protected Map<String,Set<String>>
    Should return a map of a class and a set of "factory" methods that create types that should be reported buggy (when made as local variables).
    protected Map<String,Integer>
    Should return a map of constructors that should be watched, as well as version number of Java that the given constructor becomes a bad idea.
    protected void
    Given this RegisterInfo, report an appropriate bug.

    Methods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector

    getClassContext, report, shouldVisitCode

    Methods inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode

    afterOpcode, areOppositeBranches, atCatchBlock, beforeOpcode, 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, visit

    Methods inherited from class edu.umd.cs.findbugs.visitclass.AnnotationVisitor

    getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotation

    Methods inherited from class edu.umd.cs.findbugs.visitclass.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, visitAfter, visitAnnotationDefault, visitAnnotationEntry, visitBootstrapMethods, visitConstantInvokeDynamic, visitConstantMethodHandle, visitConstantMethodType, visitConstantModule, visitConstantPackage, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitMethodParameters, visitParameterAnnotationEntry, visitStackMap, visitStackMapEntry

    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, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitSignature, visitSourceFile, visitSynthetic, visitUnknown

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.apache.bcel.classfile.Visitor

    visitConstantDynamic, visitMethodParameter, visitModule, visitModuleExports, visitModuleMainClass, visitModuleOpens, visitModulePackages, visitModuleProvides, visitModuleRequires, visitNestHost, visitNestMembers, visitRecord, visitRecordComponent, visitStackMapType
  • Field Details

    • watchedClassMethods

      private static final Map<String,Set<String>> watchedClassMethods
    • syncCtors

      private static final Map<String,Integer> syncCtors
    • bugReporter

      private final edu.umd.cs.findbugs.BugReporter bugReporter
    • delegatingDetector

      private final edu.umd.cs.findbugs.Detector delegatingDetector
  • Constructor Details

    • LocalHangingExecutor

      public LocalHangingExecutor(edu.umd.cs.findbugs.Detector delegatingDetector, edu.umd.cs.findbugs.BugReporter reporter)
  • Method Details

    • getWatchedConstructors

      protected Map<String,Integer> getWatchedConstructors()
      Description copied from class: LocalTypeDetector
      Should return a map of constructors that should be watched, as well as version number of Java that the given constructor becomes a bad idea. e.g. StringBuffer was the only way to efficiently concatenate a string until the faster, non-thread safe StringBuilder was introduced in 1.5. Thus, in code that targets before 1.5, FindBugs should not report a LocalSynchronizedCollection bug. Therefore, the entry <"java/lang/StringBuffer", Const.MAJOR_1_5> is in the returned map.
      Specified by:
      getWatchedConstructors in class LocalTypeDetector
      Returns:
      the map of watched constructors
    • getWatchedClassMethods

      protected Map<String,Set<String>> getWatchedClassMethods()
      Description copied from class: LocalTypeDetector
      Should return a map of a class and a set of "factory" methods that create types that should be reported buggy (when made as local variables).
      Specified by:
      getWatchedClassMethods in class LocalTypeDetector
      Returns:
      map of factory methods
    • getSelfReturningMethods

      protected Set<String> getSelfReturningMethods()
      Description copied from class: LocalTypeDetector
      returns a set of self returning methods, that is, methods that when called on a a synchronized collection return themselves.
      Specified by:
      getSelfReturningMethods in class LocalTypeDetector
      Returns:
      a set of self referential methods
    • reportBug

      protected void reportBug(LocalTypeDetector.RegisterInfo cri)
      Description copied from class: LocalTypeDetector
      Given this RegisterInfo, report an appropriate bug.
      Specified by:
      reportBug in class LocalTypeDetector
      Parameters:
      cri - the register info