Class FindPuzzlers
- All Implemented Interfaces:
Detector, Priorities, org.apache.bcel.classfile.Visitor
-
Nested Class Summary
Nested classes/interfaces inherited from class 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 OpcodeStackDetector
stackFields inherited from class DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTFields inherited from interface 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 OpcodeStackDetector
afterOpcode, getStack, isUsingCustomUserValue, visitCodeMethods inherited from class BytecodeScanningDetector
getClassContext, report, shouldVisitCode, visitClassContextMethods inherited from class 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 AnnotationVisitor
getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationMethods inherited from class 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 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 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)
-