Package edu.umd.cs.findbugs.detect
Class FindPuzzlers
- All Implemented Interfaces:
Detector,Priorities,org.apache.bcel.classfile.Visitor
-
Nested Class Summary
Nested classes/interfaces inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo -
Field Summary
FieldsModifier and TypeFieldDescription(package private) int(package private) int(package private) int(package private) final BugAccumulator(package private) final BugReporter(package private) boolean(package private) int(package private) int(package private) boolean(package private) boolean(package private) static ClassDescriptor(package private) static ClassDescriptor(package private) BugInstance(package private) XMethod(package private) int(package private) int(package private) boolean(package private) static FieldDescriptor(package private) static FieldDescriptor(package private) intprivate final boolean(package private) intFields inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
stackFields 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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate intadjustMultiplier(Object constant, int mul) private intadjustPriority(int factor, int priority) booleanbeforeOpcode(int seen) return false if we should skip calling sawOpcode(package private) booleanextendsThread(org.apache.bcel.classfile.JavaClass obj) (package private) booleanimplementsRunnable(org.apache.bcel.classfile.JavaClass obj) private voidvoidsawOpcode(int seen) By default, this method will not be called when stack is TOP.voidvisit(org.apache.bcel.classfile.Code obj) voidvisit(org.apache.bcel.classfile.JavaClass obj) Methods inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
afterOpcode, getStack, isUsingCustomUserValue, visitCodeMethods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, report, shouldVisitCode, visitClassContextMethods inherited from class edu.umd.cs.findbugs.visitclass.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 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, 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 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
-
SYSTEM_OUT
-
SYSTEM_ERR
-
bugReporter
-
bugAccumulator
-
testingEnabled
private final boolean testingEnabled -
becameTop
int becameTop -
imul_constant
int imul_constant -
imul_distance
int imul_distance -
imul_operand_is_parameter
boolean imul_operand_is_parameter -
prevOpcodeIncrementedRegister
int prevOpcodeIncrementedRegister -
valueOfConstantArgumentToShift
int valueOfConstantArgumentToShift -
best_priority_for_ICAST_INTEGER_MULTIPLY_CAST_TO_LONG
int best_priority_for_ICAST_INTEGER_MULTIPLY_CAST_TO_LONG -
constantArgumentToShift
boolean constantArgumentToShift -
shiftOfNonnegativeValue
boolean shiftOfNonnegativeValue -
ternaryConversionState
int ternaryConversionState -
badlyComputingOddState
int badlyComputingOddState -
prevOpCode
int prevOpCode -
previousMethodInvocation
XMethod previousMethodInvocation -
isTigerOrHigher
boolean isTigerOrHigher -
ITERATOR
-
MAP_ENTRY
-
pendingUnreachableBranch
BugInstance pendingUnreachableBranch
-
-
Constructor Details
-
FindPuzzlers
-
-
Method Details
-
visit
public void visit(org.apache.bcel.classfile.Code obj) - Overrides:
visitin classDismantleBytecode
-
visit
public void visit(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitin classBetterVisitor
-
resetIMulCastLong
private void resetIMulCastLong() -
adjustPriority
private int adjustPriority(int factor, int priority) -
adjustMultiplier
-
beforeOpcode
public boolean beforeOpcode(int seen) Description copied from class:DismantleBytecodereturn false if we should skip calling sawOpcode- Overrides:
beforeOpcodein classOpcodeStackDetector
-
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:
-
implementsRunnable
boolean implementsRunnable(org.apache.bcel.classfile.JavaClass obj) -
extendsThread
boolean extendsThread(org.apache.bcel.classfile.JavaClass obj)
-