public class FindNullDeref extends java.lang.Object implements Detector, UseAnnotationDatabase, NullDerefAndRedundantComparisonCollector
IsNullValueAnalysis
Modifier and Type | Field and Description |
---|---|
static java.util.Set<java.lang.String> |
catchTypesForNull |
static boolean |
DEBUG |
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
Constructor and Description |
---|
FindNullDeref(BugReporter bugReporter) |
Modifier and Type | Method and Description |
---|---|
static boolean |
catchesNull(org.apache.bcel.classfile.ConstantPool constantPool,
org.apache.bcel.classfile.Code code,
Location location) |
void |
foundGuaranteedNullDeref(java.util.Set<Location> assignedNullLocationSet,
java.util.Set<Location> derefLocationSet,
java.util.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).
|
void |
foundNullDeref(Location location,
ValueNumber valueNumber,
IsNullValue refValue,
ValueNumberFrame vnaFrame)
Deprecated.
|
void |
foundNullDeref(Location location,
ValueNumber valueNumber,
IsNullValue refValue,
ValueNumberFrame vnaFrame,
boolean isConsistent)
Subclasses should override this method to capture locations where a null
pointer is dereferenced.
|
void |
foundRedundantNullCheck(Location location,
RedundantBranch redundantBranch)
Subclasses should override this method to capture locations where a
redundant null comparison is performed.
|
boolean |
isDuplicated(WarningPropertySet<WarningProperty> propertySet,
int pc,
boolean isConsistent) |
static boolean |
isThrower(BasicBlock target) |
void |
report()
This method is called after all classes to be visited.
|
boolean |
skipIfInsideCatchNull() |
void |
visitClassContext(ClassContext classContext)
Visit the ClassContext for a class which should be analyzed for instances
of bug patterns.
|
public static final boolean DEBUG
@StaticConstant public static final java.util.Set<java.lang.String> catchTypesForNull
public FindNullDeref(BugReporter bugReporter)
public void visitClassContext(ClassContext classContext)
Detector
visitClassContext
in interface Detector
classContext
- the ClassContextpublic static boolean catchesNull(org.apache.bcel.classfile.ConstantPool constantPool, org.apache.bcel.classfile.Code code, Location location)
public void report()
Detector
public boolean skipIfInsideCatchNull()
@Deprecated public void foundNullDeref(Location location, ValueNumber valueNumber, IsNullValue refValue, ValueNumberFrame vnaFrame)
foundNullDeref(Location,ValueNumber,IsNullValue,ValueNumberFrame,boolean)
insteadNullDerefAndRedundantComparisonCollector
foundNullDeref
in interface NullDerefAndRedundantComparisonCollector
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
occurredpublic void foundNullDeref(Location location, ValueNumber valueNumber, IsNullValue refValue, ValueNumberFrame vnaFrame, boolean isConsistent)
NullDerefAndRedundantComparisonCollector
foundNullDeref
in interface NullDerefAndRedundantComparisonCollector
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
instructionpublic boolean isDuplicated(WarningPropertySet<WarningProperty> propertySet, int pc, boolean isConsistent)
public static boolean isThrower(BasicBlock target)
public void foundRedundantNullCheck(Location location, RedundantBranch redundantBranch)
NullDerefAndRedundantComparisonCollector
foundRedundantNullCheck
in interface NullDerefAndRedundantComparisonCollector
location
- the Location of the redundant null checkredundantBranch
- the RedundantBranchpublic void foundGuaranteedNullDeref(@Nonnull java.util.Set<Location> assignedNullLocationSet, @Nonnull java.util.Set<Location> derefLocationSet, java.util.SortedSet<Location> doomedLocations, ValueNumberDataflow vna, ValueNumber refValue, @CheckForNull BugAnnotation variableAnnotation, NullValueUnconditionalDeref deref, boolean npeIfStatementCovered)
NullDerefAndRedundantComparisonCollector
foundGuaranteedNullDeref
in interface NullDerefAndRedundantComparisonCollector
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 statementFindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.