Package edu.umd.cs.findbugs.detect
Class FindNonShortCircuit
- All Implemented Interfaces:
Detector
,Priorities
,StatelessDetector
,Cloneable
,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 TypeFieldDescriptionprivate final BugAccumulator
(package private) int
(package private) static final String
(package private) static final String
(package private) int
(package private) int
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
(package private) int
(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 void
clearAll()
(package private) BugInstance
private void
private void
void
sawOpcode
(int seen) By default, this method will not be called when stack is TOP.private void
scanForBooleanValue
(int seen) private void
scanForDanger
(int seen) private void
scanForShortCircuit
(int seen) void
visit
(org.apache.bcel.classfile.Code code) void
visit
(org.apache.bcel.classfile.Method obj) Methods inherited from class edu.umd.cs.findbugs.bcel.OpcodeStackDetector
afterOpcode, beforeOpcode, 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
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface edu.umd.cs.findbugs.StatelessDetector
clone
Methods inherited from interface org.apache.bcel.classfile.Visitor
visitConstantDynamic, visitMethodParameter, visitModule, visitModuleExports, visitModuleMainClass, visitModuleOpens, visitModulePackages, visitModuleProvides, visitModuleRequires, visitNestHost, visitNestMembers, visitStackMapType
-
Field Details
-
NS_NON_SHORT_CIRCUIT
- See Also:
-
NS_DANGEROUS_NON_SHORT_CIRCUIT
- See Also:
-
stage1
int stage1 -
stage2
int stage2 -
distance
int distance -
operator
int operator -
sawDanger
boolean sawDanger -
sawNullTestOld
boolean sawNullTestOld -
sawNullTestVeryOld
boolean sawNullTestVeryOld -
sawNullTest
boolean sawNullTest -
sawDangerOld
boolean sawDangerOld -
sawNumericTest
boolean sawNumericTest -
sawNumericTestOld
boolean sawNumericTestOld -
sawNumericTestVeryOld
boolean sawNumericTestVeryOld -
sawArrayDanger
boolean sawArrayDanger -
sawArrayDangerOld
boolean sawArrayDangerOld -
sawMethodCall
boolean sawMethodCall -
sawMethodCallOld
boolean sawMethodCallOld -
bugAccumulator
-
prevOpcode
int prevOpcode
-
-
Constructor Details
-
FindNonShortCircuit
-
-
Method Details
-
visit
public void visit(org.apache.bcel.classfile.Method obj) - Overrides:
visit
in classBetterVisitor
-
clearAll
private void clearAll() -
visit
public void visit(org.apache.bcel.classfile.Code code) - Overrides:
visit
in classDismantleBytecode
-
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:
-
scanForDanger
private void scanForDanger(int seen) -
scanForShortCircuit
private void scanForShortCircuit(int seen) -
reportBug
private void reportBug() -
createBugInstance
BugInstance createBugInstance() -
scanForBooleanValue
private void scanForBooleanValue(int seen) -
sawBooleanValue
private void sawBooleanValue()
-