FindBugs™ 1.3.9

edu.umd.cs.findbugs.detect
Class NoiseNullDeref

java.lang.Object
  extended by edu.umd.cs.findbugs.detect.NoiseNullDeref
All Implemented Interfaces:
NullDerefAndRedundantComparisonCollector, Detector, Priorities, UseAnnotationDatabase

public class NoiseNullDeref
extends java.lang.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:
IsNullValueAnalysis

Field Summary
static boolean DEBUG
           
 
Fields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
 
Constructor Summary
NoiseNullDeref(BugReporter bugReporter)
           
 
Method Summary
 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. Use foundNullDeref(Location,ValueNumber,IsNullValue,ValueNumberFrame,boolean) instead
 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.
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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

public static final boolean DEBUG
Constructor Detail

NoiseNullDeref

public NoiseNullDeref(BugReporter bugReporter)
Method Detail

visitClassContext

public void visitClassContext(ClassContext classContext)
Description copied from interface: Detector
Visit the ClassContext for a class which should be analyzed for instances of bug patterns.

Specified by:
visitClassContext in interface Detector
Parameters:
classContext - the ClassContext

report

public void report()
Description copied from interface: Detector
This 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.

Specified by:
report in interface Detector

skipIfInsideCatchNull

public boolean skipIfInsideCatchNull()

foundNullDeref

public void foundNullDeref(Location location,
                           ValueNumber valueNumber,
                           IsNullValue refValue,
                           ValueNumberFrame vnaFrame)
Deprecated. Use foundNullDeref(Location,ValueNumber,IsNullValue,ValueNumberFrame,boolean) instead

Description copied from interface: NullDerefAndRedundantComparisonCollector
Subclasses should override this method to capture locations where a null pointer is dereferenced.

Specified by:
foundNullDeref in interface NullDerefAndRedundantComparisonCollector
Parameters:
location - the Location of the null dereference
valueNumber - the ValueNumber of the possibly-null value
refValue - the kind of possibly-null value dereferenced
vnaFrame - 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: NullDerefAndRedundantComparisonCollector
Subclasses should override this method to capture locations where a null pointer is dereferenced.

Specified by:
foundNullDeref in interface NullDerefAndRedundantComparisonCollector
Parameters:
location - the Location of the null dereference
valueNumber - the ValueNumber of the possibly-null value
refValue - the kind of possibly-null value dereferenced
vnaFrame - The ValueNumber Frame at the point where the dereference occurred
isConsistent - true if the refValue is identical at all clones of the same instruction

isThrower

public static boolean isThrower(BasicBlock target)

foundRedundantNullCheck

public void foundRedundantNullCheck(Location location,
                                    RedundantBranch redundantBranch)
Description copied from interface: NullDerefAndRedundantComparisonCollector
Subclasses should override this method to capture locations where a redundant null comparison is performed.

Specified by:
foundRedundantNullCheck in interface NullDerefAndRedundantComparisonCollector
Parameters:
location - the Location of the redundant null check
redundantBranch - the RedundantBranch

foundGuaranteedNullDeref

public 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)
Description copied from interface: NullDerefAndRedundantComparisonCollector
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).

Specified by:
foundGuaranteedNullDeref in interface NullDerefAndRedundantComparisonCollector
Parameters:
assignedNullLocationSet - set of locations where the value becomes null
derefLocationSet - set of locations where dereferences occur
doomedLocations - locations at which the value is doomed
vna - ValueNumberDataflow
refValue - the null value
variableAnnotation - TODO
deref - TODO
npeIfStatementCovered - true if doom location is a statement

FindBugs™ 1.3.9

FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.