Package edu.umd.cs.findbugs.detect
Class FindNonShortCircuit
- java.lang.Object
-
- All Implemented Interfaces:
Detector
,Priorities
,StatelessDetector
,java.lang.Cloneable
,org.apache.bcel.classfile.Visitor
public class FindNonShortCircuit extends OpcodeStackDetector implements StatelessDetector
-
-
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 private BugAccumulator
bugAccumulator
(package private) int
distance
(package private) static java.lang.String
NS_DANGEROUS_NON_SHORT_CIRCUIT
(package private) static java.lang.String
NS_NON_SHORT_CIRCUIT
(package private) int
operator
(package private) int
prevOpcode
(package private) boolean
sawArrayDanger
(package private) boolean
sawArrayDangerOld
(package private) boolean
sawDanger
(package private) boolean
sawDangerOld
(package private) boolean
sawMethodCall
(package private) boolean
sawMethodCallOld
(package private) boolean
sawNullTest
(package private) boolean
sawNullTestOld
(package private) boolean
sawNullTestVeryOld
(package private) boolean
sawNumericTest
(package private) boolean
sawNumericTestOld
(package private) boolean
sawNumericTestVeryOld
(package private) int
stage1
(package private) int
stage2
-
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 FindNonShortCircuit(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
clearAll()
(package private) BugInstance
createBugInstance()
private void
reportBug()
private void
sawBooleanValue()
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
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 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, visitRecord, visitRecordComponent, visitStackMapType
-
-
-
-
Field Detail
-
NS_NON_SHORT_CIRCUIT
static final java.lang.String NS_NON_SHORT_CIRCUIT
- See Also:
- Constant Field Values
-
NS_DANGEROUS_NON_SHORT_CIRCUIT
static final java.lang.String NS_DANGEROUS_NON_SHORT_CIRCUIT
- See Also:
- Constant Field Values
-
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
private final BugAccumulator bugAccumulator
-
prevOpcode
int prevOpcode
-
-
Constructor Detail
-
FindNonShortCircuit
public FindNonShortCircuit(BugReporter bugReporter)
-
-
Method Detail
-
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:
OpcodeStackDetector.beforeOpcode(int)
-
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()
-
-