Package edu.umd.cs.findbugs.ba.npe
Class IsNullValue
- java.lang.Object
-
- 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.Debug
VERIFY_INTEGRITY
-
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
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 MightBeNullstatic IsNullValue
parameterMarkedAsNonnull(XMethodParameter mp)
Get instance representing a parameter marked as Nonnullstatic 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?
-
-
-
Method Detail
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.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
-
parameterMarkedAsNonnull
public static IsNullValue parameterMarkedAsNonnull(XMethodParameter mp)
Get instance representing a parameter marked as Nonnull
-
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 classjava.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)
-
-