Package com.mebigfatguy.fbcontrib.detect
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
-
Nested Class Summary
Nested classes/interfaces inherited from class com.mebigfatguy.fbcontrib.detect.LocalTypeDetector
LocalTypeDetector.RegisterInfo -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final edu.umd.cs.findbugs.BugReporterprivate final edu.umd.cs.findbugs.DetectorFields inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTFields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY -
Constructor Summary
ConstructorsConstructorDescriptionLocalHangingExecutor(edu.umd.cs.findbugs.Detector delegatingDetector, edu.umd.cs.findbugs.BugReporter reporter) -
Method Summary
Modifier and TypeMethodDescriptionreturns a set of self returning methods, that is, methods that when called on a a synchronized collection return themselves.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).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 voidGiven this RegisterInfo, report an appropriate bug.Methods inherited from class com.mebigfatguy.fbcontrib.detect.LocalTypeDetector
checkConstructors, checkSelfReturningMethods, checkStaticCreations, dealWithStoring, reportTroublesomeLocals, sawOpcode, visitClassContext, visitCode, visitMethodMethods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, report, shouldVisitCodeMethods 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, visitMethods inherited from class edu.umd.cs.findbugs.visitclass.AnnotationVisitor
getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationMethods 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, visitStackMapEntryMethods 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, visitUnknownMethods inherited from class java.lang.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
-
watchedClassMethods
-
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
Description copied from class:LocalTypeDetectorShould 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:
getWatchedConstructorsin classLocalTypeDetector- Returns:
- the map of watched constructors
-
getWatchedClassMethods
Description copied from class:LocalTypeDetectorShould 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:
getWatchedClassMethodsin classLocalTypeDetector- Returns:
- map of factory methods
-
getSelfReturningMethods
Description copied from class:LocalTypeDetectorreturns a set of self returning methods, that is, methods that when called on a a synchronized collection return themselves.- Specified by:
getSelfReturningMethodsin classLocalTypeDetector- Returns:
- a set of self referential methods
-
reportBug
Description copied from class:LocalTypeDetectorGiven this RegisterInfo, report an appropriate bug.- Specified by:
reportBugin classLocalTypeDetector- Parameters:
cri- the register info
-