Package edu.umd.cs.findbugs.detect
Class FindPuzzlers
- java.lang.Object
-
- All Implemented Interfaces:
Detector
,Priorities
,org.apache.bcel.classfile.Visitor
public class FindPuzzlers extends OpcodeStackDetector
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int
badlyComputingOddState
(package private) int
becameTop
(package private) int
best_priority_for_ICAST_INTEGER_MULTIPLY_CAST_TO_LONG
(package private) BugAccumulator
bugAccumulator
(package private) BugReporter
bugReporter
(package private) boolean
constantArgumentToShift
(package private) int
imul_constant
(package private) int
imul_distance
(package private) boolean
imul_operand_is_parameter
(package private) boolean
isTigerOrHigher
(package private) static ClassDescriptor
ITERATOR
(package private) static ClassDescriptor
MAP_ENTRY
(package private) BugInstance
pendingUnreachableBranch
(package private) XMethod
previousMethodInvocation
(package private) int
prevOpCode
(package private) int
prevOpcodeIncrementedRegister
(package private) boolean
shiftOfNonnegativeValue
(package private) static FieldDescriptor
SYSTEM_ERR
(package private) static FieldDescriptor
SYSTEM_OUT
(package private) int
ternaryConversionState
private boolean
testingEnabled
(package private) int
valueOfConstantArgumentToShift
-
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 Constructor Description FindPuzzlers(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private int
adjustMultiplier(java.lang.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
resetIMulCastLong()
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
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
-
-
-
-
Field Detail
-
SYSTEM_OUT
static FieldDescriptor SYSTEM_OUT
-
SYSTEM_ERR
static FieldDescriptor SYSTEM_ERR
-
bugReporter
final BugReporter bugReporter
-
bugAccumulator
final BugAccumulator 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
static ClassDescriptor ITERATOR
-
MAP_ENTRY
static ClassDescriptor MAP_ENTRY
-
pendingUnreachableBranch
BugInstance pendingUnreachableBranch
-
-
Constructor Detail
-
FindPuzzlers
public FindPuzzlers(BugReporter bugReporter)
-
-
Method Detail
-
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
private int adjustMultiplier(java.lang.Object constant, int mul)
-
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:
OpcodeStackDetector.beforeOpcode(int)
-
implementsRunnable
boolean implementsRunnable(org.apache.bcel.classfile.JavaClass obj)
-
extendsThread
boolean extendsThread(org.apache.bcel.classfile.JavaClass obj)
-
-