Package edu.umd.cs.findbugs.detect
Class FindNullDeref
java.lang.Object
edu.umd.cs.findbugs.detect.FindNullDeref
- All Implemented Interfaces:
NullDerefAndRedundantComparisonCollector,Detector,Priorities,UseAnnotationDatabase
public class FindNullDeref
extends Object
implements Detector, UseAnnotationDatabase, NullDerefAndRedundantComparisonCollector
A Detector to find instructions where a NullPointerException might be raised.
We also look for useless reference comparisons involving null and non-null
values.
- Author:
- David Hovemeyer, William Pugh
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final booleanFields 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 TypeMethodDescriptionstatic booleancatchesNull(org.apache.bcel.classfile.ConstantPool constantPool, org.apache.bcel.classfile.Code code, Location location) voidfoundGuaranteedNullDeref(Set<Location> assignedNullLocationSet, Set<Location> derefLocationSet, SortedSet<Location> doomedLocations, ValueNumberDataflow vna, ValueNumber refValue, BugAnnotation variableAnnotation, NullValueUnconditionalDeref deref, boolean npeIfStatementCovered) Subclasses should override this method to capture values assigned null (or that become null through a comparison and branch) that are guaranteed to reach a dereference (ignoring implicit exception paths).voidfoundNullDeref(Location location, ValueNumber valueNumber, IsNullValue refValue, ValueNumberFrame vnaFrame) Deprecated.voidfoundNullDeref(Location location, ValueNumber valueNumber, IsNullValue refValue, ValueNumberFrame vnaFrame, boolean isConsistent) Subclasses should override this method to capture locations where a null pointer is dereferenced.voidfoundRedundantNullCheck(Location location, RedundantBranch redundantBranch) Subclasses should override this method to capture locations where a redundant null comparison is performed.booleanisDuplicated(WarningPropertySet<WarningProperty> propertySet, int pc, boolean isConsistent) static booleanisThrower(BasicBlock target) voidreport()This method is called after all classes to be visited.booleanvoidvisitClassContext(ClassContext classContext) Visit the ClassContext for a class which should be analyzed for instances of bug patterns.
-
Field Details
-
DEBUG
public static final boolean DEBUG -
catchTypesForNull
-
-
Constructor Details
-
FindNullDeref
-
-
Method Details
-
visitClassContext
Description copied from interface:DetectorVisit the ClassContext for a class which should be analyzed for instances of bug patterns.- Specified by:
visitClassContextin interfaceDetector- Parameters:
classContext- the ClassContext
-
catchesNull
public static boolean catchesNull(org.apache.bcel.classfile.ConstantPool constantPool, org.apache.bcel.classfile.Code code, Location location) -
report
public void report()Description copied from interface:DetectorThis method is called after all classes to be visited. It should be used by any detectors which accumulate information over all visited classes to generate results. -
skipIfInsideCatchNull
public boolean skipIfInsideCatchNull() -
foundNullDeref
@Deprecated public void foundNullDeref(Location location, ValueNumber valueNumber, IsNullValue refValue, ValueNumberFrame vnaFrame) Deprecated.Description copied from interface:NullDerefAndRedundantComparisonCollectorSubclasses should override this method to capture locations where a null pointer is dereferenced.- Specified by:
foundNullDerefin interfaceNullDerefAndRedundantComparisonCollector- Parameters:
location- the Location of the null dereferencevalueNumber- the ValueNumber of the possibly-null valuerefValue- the kind of possibly-null value dereferencedvnaFrame- The ValueNumber Frame at the point where the dereference occurred
-
foundNullDeref
public void foundNullDeref(Location location, ValueNumber valueNumber, IsNullValue refValue, ValueNumberFrame vnaFrame, boolean isConsistent) Description copied from interface:NullDerefAndRedundantComparisonCollectorSubclasses should override this method to capture locations where a null pointer is dereferenced.- Specified by:
foundNullDerefin interfaceNullDerefAndRedundantComparisonCollector- Parameters:
location- the Location of the null dereferencevalueNumber- the ValueNumber of the possibly-null valuerefValue- the kind of possibly-null value dereferencedvnaFrame- The ValueNumber Frame at the point where the dereference occurredisConsistent- true if the refValue is identical at all clones of the same instruction
-
isDuplicated
public boolean isDuplicated(WarningPropertySet<WarningProperty> propertySet, int pc, boolean isConsistent) -
isThrower
-
foundRedundantNullCheck
Description copied from interface:NullDerefAndRedundantComparisonCollectorSubclasses should override this method to capture locations where a redundant null comparison is performed.- Specified by:
foundRedundantNullCheckin interfaceNullDerefAndRedundantComparisonCollector- Parameters:
location- the Location of the redundant null checkredundantBranch- the RedundantBranch
-
foundGuaranteedNullDeref
public void foundGuaranteedNullDeref(@Nonnull Set<Location> assignedNullLocationSet, @Nonnull Set<Location> derefLocationSet, SortedSet<Location> doomedLocations, ValueNumberDataflow vna, ValueNumber refValue, @CheckForNull BugAnnotation variableAnnotation, NullValueUnconditionalDeref deref, boolean npeIfStatementCovered) Description copied from interface:NullDerefAndRedundantComparisonCollectorSubclasses should override this method to capture values assigned null (or that become null through a comparison and branch) that are guaranteed to reach a dereference (ignoring implicit exception paths).- Specified by:
foundGuaranteedNullDerefin interfaceNullDerefAndRedundantComparisonCollector- Parameters:
assignedNullLocationSet- set of locations where the value becomes nullderefLocationSet- set of locations where dereferences occurdoomedLocations- locations at which the value is doomedvna- ValueNumberDataflowrefValue- the null valuevariableAnnotation- TODOderef- TODOnpeIfStatementCovered- true if doom location is a statement
-
foundNullDeref(Location,ValueNumber,IsNullValue,ValueNumberFrame,boolean)instead