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) int
private final boolean
(package private) int
Fields inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
stack
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 -
Method Summary
Modifier and TypeMethodDescriptionprivate int
adjustMultiplier
(Object constant, int mul) private int
adjustPriority
(int factor, int priority) boolean
beforeOpcode
(int seen) return false if we should skip calling sawOpcode(package private) boolean
extendsThread
(org.apache.bcel.classfile.JavaClass obj) (package private) boolean
implementsRunnable
(org.apache.bcel.classfile.JavaClass obj) private void
void
sawOpcode
(int seen) By default, this method will not be called when stack is TOP.void
visit
(org.apache.bcel.classfile.Code obj) void
visit
(org.apache.bcel.classfile.JavaClass obj) Methods inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
afterOpcode, getStack, isUsingCustomUserValue, visitCode
Methods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, report, shouldVisitCode, visitClassContext
Methods 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, sawString
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, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, 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
-
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:
visit
in classDismantleBytecode
-
visit
public void visit(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visit
in classBetterVisitor
-
resetIMulCastLong
private void resetIMulCastLong() -
adjustPriority
private int adjustPriority(int factor, int priority) -
adjustMultiplier
-
beforeOpcode
public boolean beforeOpcode(int seen) Description copied from class:DismantleBytecode
return false if we should skip calling sawOpcode- Overrides:
beforeOpcode
in classOpcodeStackDetector
-
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 classOpcodeStackDetector
- See Also:
-
implementsRunnable
boolean implementsRunnable(org.apache.bcel.classfile.JavaClass obj) -
extendsThread
boolean extendsThread(org.apache.bcel.classfile.JavaClass obj)
-