FindBugs™ 1.3.9

edu.umd.cs.findbugs.ba.npe
Class IsNullValue

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.npe.IsNullValue
All Implemented Interfaces:
Debug, IsNullValueAnalysisFeatures

public class IsNullValue
extends java.lang.Object
implements IsNullValueAnalysisFeatures, Debug

A class to abstractly represent values in stack slots, indicating whether thoses values can be null, non-null, null on some incoming path, or unknown.

Author:
David Hovemeyer
See Also:
IsNullValueFrame, IsNullValueAnalysis

Field Summary
 
Fields inherited from interface edu.umd.cs.findbugs.ba.npe.IsNullValueAnalysisFeatures
NCP_EXTRA_BRANCH, NO_SPLIT_DOWNGRADE_NSP, NO_SWITCH_DEFAULT_AS_EXCEPTION, UNKNOWN_VALUES_ARE_NSP, USE_TYPE_QUALIFIERS
 
Fields inherited from interface edu.umd.cs.findbugs.ba.Debug
VERIFY_INTEGRITY
 
Method Summary
static IsNullValue checkedNonNullValue()
          Get the instance representing a value known to be non-null because it was compared against null value, or because we saw the object creation.
static IsNullValue checkedNullValue()
          Get the instance representing a value known to be null because it was compared against null value, or because we saw that it was assigned the null constant.
 IsNullValue downgradeOnControlSplit()
          Control split: move given value down in the lattice if it is a conditionally-null value.
 boolean equals(java.lang.Object o)
           
 Location getLocationOfKaBoom()
           
 int hashCode()
           
 boolean isChecked()
          Is this value known because of an explicit null check?
 boolean isDefinitelyNotNull()
          Is this value definitely not null?
 boolean isDefinitelyNull()
          Is this value definitely null?
 boolean isException()
          Was this value propagated on an exception path?
 boolean isFieldValue()
           
 boolean isNullOnComplicatedPath()
          Is this value null on a complicated path?
 boolean isNullOnComplicatedPath2()
          Is this value null on a complicated path?
 boolean isNullOnComplicatedPath23()
          Is this value null on a complicated path?
 boolean isNullOnSomePath()
          Is this value null on some path?
 boolean isParamValue()
          Was this value marked as a possibly null parameter?
 boolean isReadlineValue()
           
 boolean isReturnValue()
          Was this value marked as a possibly null return value?
 IsNullValue markInformationAsComingFromFieldValue(XField field)
          Convert to a value known because it was returned from a method in a method property database.
 IsNullValue markInformationAsComingFromReturnValueOfMethod(XMethod methodInvoked)
          Convert to a value known because it was returned from a method in a method property database.
static IsNullValue merge(IsNullValue a, IsNullValue b)
          Merge two values.
 boolean mightBeNull()
          Return true if this value is either definitely null, or might be null on a simple path.
static IsNullValue noKaboomNonNullValue(Location ins)
          Get the instance representing a value known to be non-null because a NPE would have occurred if it were null.
static IsNullValue nonNullValue()
          Get the instance representing values that are definitely not null.
static IsNullValue nonReportingNotNullValue()
          Get non-reporting non-null value.
static IsNullValue nullOnComplexPathValue()
          Get null on complex path value.
static IsNullValue nullOnComplexPathValue3()
          Like "null on complex path" except that there are at least three branches between the explicit null value and the current location.
static IsNullValue nullOnSimplePathValue()
          Get the instance representing values that are definitely null on some simple (no branches) incoming path.
static IsNullValue nullValue()
          Get the instance representing values that are definitely null.
static IsNullValue parameterMarkedAsMightBeNull(XMethodParameter mp)
          Get instance representing a parameter marked as MightBeNull
static IsNullValue pathSensitiveNonNullValue()
          Get non-null value resulting from comparison to explicit null.
static IsNullValue pathSensitiveNullValue()
          Get null value resulting from comparison to explicit null.
 IsNullValue toExceptionValue()
          Convert to an exception path value.
 java.lang.String toString()
           
 boolean wouldHaveBeenAKaboom()
          Is this value known to be non null because a NPE would have occurred otherwise?
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Method Detail

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

isException

public boolean isException()
Was this value propagated on an exception path?


isReturnValue

public boolean isReturnValue()
Was this value marked as a possibly null return value?


isReadlineValue

public boolean isReadlineValue()

isFieldValue

public boolean isFieldValue()

isParamValue

public boolean isParamValue()
Was this value marked as a possibly null parameter?


isChecked

public boolean isChecked()
Is this value known because of an explicit null check?


wouldHaveBeenAKaboom

public boolean wouldHaveBeenAKaboom()
Is this value known to be non null because a NPE would have occurred otherwise?


toExceptionValue

public IsNullValue toExceptionValue()
Convert to an exception path value.


markInformationAsComingFromReturnValueOfMethod

public IsNullValue markInformationAsComingFromReturnValueOfMethod(XMethod methodInvoked)
Convert to a value known because it was returned from a method in a method property database.

Parameters:
methodInvoked - TODO

markInformationAsComingFromFieldValue

public IsNullValue markInformationAsComingFromFieldValue(XField field)
Convert to a value known because it was returned from a method in a method property database.

Parameters:
field - TODO

nullValue

public static IsNullValue nullValue()
Get the instance representing values that are definitely null.


checkedNullValue

public static IsNullValue checkedNullValue()
Get the instance representing a value known to be null because it was compared against null value, or because we saw that it was assigned the null constant.


nonNullValue

public static IsNullValue nonNullValue()
Get the instance representing values that are definitely not null.


checkedNonNullValue

public static IsNullValue checkedNonNullValue()
Get the instance representing a value known to be non-null because it was compared against null value, or because we saw the object creation.


noKaboomNonNullValue

public static IsNullValue noKaboomNonNullValue(@NonNull
                                               Location ins)
Get the instance representing a value known to be non-null because a NPE would have occurred if it were null.


nullOnSimplePathValue

public static IsNullValue nullOnSimplePathValue()
Get the instance representing values that are definitely null on some simple (no branches) incoming path.


parameterMarkedAsMightBeNull

public static IsNullValue parameterMarkedAsMightBeNull(XMethodParameter mp)
Get instance representing a parameter marked as MightBeNull


nonReportingNotNullValue

public static IsNullValue nonReportingNotNullValue()
Get non-reporting non-null value. This is what we use for unknown values.


nullOnComplexPathValue

public static IsNullValue nullOnComplexPathValue()
Get null on complex path value. This is like null on simple path value, but there are at least two branches between the explicit null value and the current location. If the conditions are correlated, then the path on which the value is null may be infeasible.


nullOnComplexPathValue3

public static IsNullValue nullOnComplexPathValue3()
Like "null on complex path" except that there are at least three branches between the explicit null value and the current location.


pathSensitiveNullValue

public static IsNullValue pathSensitiveNullValue()
Get null value resulting from comparison to explicit null.


pathSensitiveNonNullValue

public static IsNullValue pathSensitiveNonNullValue()
Get non-null value resulting from comparison to explicit null.


merge

public static IsNullValue merge(IsNullValue a,
                                IsNullValue b)
Merge two values.


isDefinitelyNull

public boolean isDefinitelyNull()
Is this value definitely null?


isNullOnSomePath

public boolean isNullOnSomePath()
Is this value null on some path?


isNullOnComplicatedPath

public boolean isNullOnComplicatedPath()
Is this value null on a complicated path?


isNullOnComplicatedPath23

public boolean isNullOnComplicatedPath23()
Is this value null on a complicated path?


isNullOnComplicatedPath2

public boolean isNullOnComplicatedPath2()
Is this value null on a complicated path?


mightBeNull

public boolean mightBeNull()
Return true if this value is either definitely null, or might be null on a simple path.

Returns:
true if this value is either definitely null, or might be null on a simple path, false otherwise

isDefinitelyNotNull

public boolean isDefinitelyNotNull()
Is this value definitely not null?


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getLocationOfKaBoom

public Location getLocationOfKaBoom()

downgradeOnControlSplit

public IsNullValue downgradeOnControlSplit()
Control split: move given value down in the lattice if it is a conditionally-null value.

Returns:
another value (equal or further down in the lattice)

FindBugs™ 1.3.9

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