Package edu.umd.cs.findbugs
Class OpcodeStack.Item
- java.lang.Object
-
- edu.umd.cs.findbugs.OpcodeStack.Item
-
- Enclosing class:
- OpcodeStack
public static class OpcodeStack.Item extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
OpcodeStack.Item.SpecialKind
A type qualifier to markint
value as SpecialKind type.
-
Field Summary
Fields Modifier and Type Field Description static int
AVERAGE_COMPUTED_USING_DIVISION
static int
FILE_OPENED_IN_APPEND_MODE
static int
FILE_SEPARATOR_STRING
static int
FLOAT_MATH
static int
HASHCODE_INT
static int
HASHCODE_INT_REMAINDER
static int
INTEGER_SUM
static int
LOW_8_BITS_CLEAR
static int
MATH_ABS
static int
MATH_ABS_OF_HASHCODE
static int
MATH_ABS_OF_RANDOM
static int
NASTY_FLOAT_MATH
static int
NEWLY_ALLOCATED
static int
NON_NEGATIVE
static int
NONZERO_MEANS_NULL
static int
NOT_SPECIAL
static int
RANDOM_INT
static int
RANDOM_INT_REMAINDER
static int
RESULT_OF_I2L
static int
RESULT_OF_L2I
static int
SERVLET_OUTPUT
static int
SERVLET_REQUEST_TAINTED
static int
SIGNED_BYTE
static int
TYPE_ONLY
static java.lang.Object
UNKNOWN
static int
ZERO_MEANS_NULL
-
Constructor Summary
Constructors Constructor Description Item()
Item(OpcodeStack.Item it)
Item(OpcodeStack.Item it, int reg)
Item(OpcodeStack.Item it, java.lang.String signature)
Item(java.lang.String signature)
Item(java.lang.String signature, int constValue)
Item(java.lang.String signature, FieldAnnotation f)
Item(java.lang.String signature, FieldAnnotation f, int fieldLoadedFromRegister)
Item(java.lang.String signature, java.lang.Object constantValue)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
checkForIntegerMinValue()
Value could be Integer.MIN_VALUEvoid
clearNewlyAllocated()
OpcodeStack.Item
cloneAndSetSpecialKind(int specialKind)
boolean
couldBeZero()
static int
defineSpecialKind(java.lang.String name)
Define a new special kind and name it as specified.boolean
equals(java.lang.Object o)
java.lang.Object
getConstant()
Returns a constant value for this Item, if known.java.lang.String
getElementSignature()
Deprecated.FieldAnnotation
getFieldAnnotation()
Deprecated.int
getFieldLoadedFromRegister()
If this value was loaded from an instance field, give the register number containing the object that the field was loaded from.java.lang.String
getHttpParameterName()
int
getInjectionPC()
org.apache.bcel.classfile.JavaClass
getJavaClass()
Returns null for primitive and arraysint
getPC()
int
getRegisterNumber()
XMethod
getReturnValueOf()
java.lang.String
getSignature()
int
getSize()
int
getSpecialKind()
int
getSpecialKindForAbs()
int
getSpecialKindForRemainder()
static java.util.Optional<java.lang.String>
getSpecialKindName(int specialKind)
java.lang.Object
getUserValue()
gets the detector specified value for this itemXField
getXField()
boolean
hasConstantValue(int value)
boolean
hasConstantValue(long value)
int
hashCode()
static OpcodeStack.Item
initialArgument(java.lang.String signature, int reg)
boolean
isArray()
boolean
isBooleanNullnessValue()
boolean
isInitialParameter()
boolean
isNewlyAllocated()
boolean
isNonNegative()
boolean
isNull()
boolean
isPrimitive()
boolean
isServletParameterTainted()
boolean
isServletWriter()
boolean
isWide()
void
makeCrossMethod()
static OpcodeStack.Item
merge(OpcodeStack.Item i1, OpcodeStack.Item i2)
boolean
mightRarelyBeNegative()
The result of applying Math.abs to a checkForIntegerMinValue() valueboolean
mustBeZero()
static OpcodeStack.Item
nullItem(java.lang.String signature)
boolean
sameValue(OpcodeStack.Item that)
void
setCouldBeNegative()
void
setIsServletWriter()
void
setLoadedFromField(XField f, int fieldLoadedFromRegister)
void
setPC(int pc)
void
setServletParameterTainted()
void
setSpecialKind(int specialKind)
void
setUserValue(java.lang.Object value)
attaches a detector specified value to this itemjava.lang.String
toString()
static OpcodeStack.Item
typeOnly(java.lang.String signature)
boolean
usesTwoSlots()
boolean
valueCouldBeNegative()
-
-
-
Field Detail
-
NOT_SPECIAL
@SpecialKind public static final int NOT_SPECIAL
- See Also:
- Constant Field Values
-
SIGNED_BYTE
@SpecialKind public static final int SIGNED_BYTE
- See Also:
- Constant Field Values
-
RANDOM_INT
@SpecialKind public static final int RANDOM_INT
- See Also:
- Constant Field Values
-
LOW_8_BITS_CLEAR
@SpecialKind public static final int LOW_8_BITS_CLEAR
- See Also:
- Constant Field Values
-
HASHCODE_INT
@SpecialKind public static final int HASHCODE_INT
- See Also:
- Constant Field Values
-
INTEGER_SUM
@SpecialKind public static final int INTEGER_SUM
- See Also:
- Constant Field Values
-
AVERAGE_COMPUTED_USING_DIVISION
@SpecialKind public static final int AVERAGE_COMPUTED_USING_DIVISION
- See Also:
- Constant Field Values
-
FLOAT_MATH
@SpecialKind public static final int FLOAT_MATH
- See Also:
- Constant Field Values
-
RANDOM_INT_REMAINDER
@SpecialKind public static final int RANDOM_INT_REMAINDER
- See Also:
- Constant Field Values
-
HASHCODE_INT_REMAINDER
@SpecialKind public static final int HASHCODE_INT_REMAINDER
- See Also:
- Constant Field Values
-
FILE_SEPARATOR_STRING
@SpecialKind public static final int FILE_SEPARATOR_STRING
- See Also:
- Constant Field Values
-
MATH_ABS
@SpecialKind public static final int MATH_ABS
- See Also:
- Constant Field Values
-
MATH_ABS_OF_RANDOM
@SpecialKind public static final int MATH_ABS_OF_RANDOM
- See Also:
- Constant Field Values
-
MATH_ABS_OF_HASHCODE
@SpecialKind public static final int MATH_ABS_OF_HASHCODE
- See Also:
- Constant Field Values
-
NON_NEGATIVE
@SpecialKind public static final int NON_NEGATIVE
- See Also:
- Constant Field Values
-
NASTY_FLOAT_MATH
@SpecialKind public static final int NASTY_FLOAT_MATH
- See Also:
- Constant Field Values
-
FILE_OPENED_IN_APPEND_MODE
@SpecialKind public static final int FILE_OPENED_IN_APPEND_MODE
- See Also:
- Constant Field Values
-
SERVLET_REQUEST_TAINTED
@SpecialKind public static final int SERVLET_REQUEST_TAINTED
- See Also:
- Constant Field Values
-
NEWLY_ALLOCATED
@SpecialKind public static final int NEWLY_ALLOCATED
- See Also:
- Constant Field Values
-
ZERO_MEANS_NULL
@SpecialKind public static final int ZERO_MEANS_NULL
- See Also:
- Constant Field Values
-
NONZERO_MEANS_NULL
@SpecialKind public static final int NONZERO_MEANS_NULL
- See Also:
- Constant Field Values
-
RESULT_OF_I2L
@SpecialKind public static final int RESULT_OF_I2L
- See Also:
- Constant Field Values
-
RESULT_OF_L2I
@SpecialKind public static final int RESULT_OF_L2I
- See Also:
- Constant Field Values
-
SERVLET_OUTPUT
@SpecialKind public static final int SERVLET_OUTPUT
- See Also:
- Constant Field Values
-
TYPE_ONLY
@SpecialKind public static final int TYPE_ONLY
- See Also:
- Constant Field Values
-
UNKNOWN
public static final java.lang.Object UNKNOWN
-
-
Constructor Detail
-
Item
public Item(java.lang.String signature, int constValue)
-
Item
public Item(java.lang.String signature)
-
Item
public Item(OpcodeStack.Item it)
-
Item
public Item(OpcodeStack.Item it, java.lang.String signature)
-
Item
public Item(OpcodeStack.Item it, int reg)
-
Item
public Item(java.lang.String signature, FieldAnnotation f)
-
Item
public Item(java.lang.String signature, FieldAnnotation f, int fieldLoadedFromRegister)
-
Item
public Item(java.lang.String signature, java.lang.Object constantValue)
-
Item
public Item()
-
-
Method Detail
-
makeCrossMethod
public void makeCrossMethod()
-
getSize
public int getSize()
-
getPC
public int getPC()
-
setPC
public void setPC(int pc)
-
isWide
public boolean isWide()
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
usesTwoSlots
public boolean usesTwoSlots()
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
sameValue
public boolean sameValue(OpcodeStack.Item that)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
merge
public static OpcodeStack.Item merge(OpcodeStack.Item i1, OpcodeStack.Item i2)
-
initialArgument
public static OpcodeStack.Item initialArgument(java.lang.String signature, int reg)
-
typeOnly
public static OpcodeStack.Item typeOnly(java.lang.String signature)
-
getFieldLoadedFromRegister
public int getFieldLoadedFromRegister()
If this value was loaded from an instance field, give the register number containing the object that the field was loaded from. If Integer.MAX value, the value was loaded from a static field If -1, we don't know or don't have the register containing the object that the field was loaded from.
-
setLoadedFromField
public void setLoadedFromField(XField f, int fieldLoadedFromRegister)
-
getHttpParameterName
@CheckForNull public java.lang.String getHttpParameterName()
-
getInjectionPC
public int getInjectionPC()
-
setCouldBeNegative
public void setCouldBeNegative()
-
nullItem
public static OpcodeStack.Item nullItem(java.lang.String signature)
-
getJavaClass
@CheckForNull public org.apache.bcel.classfile.JavaClass getJavaClass() throws java.lang.ClassNotFoundException
Returns null for primitive and arrays- Throws:
java.lang.ClassNotFoundException
-
isArray
public boolean isArray()
-
getElementSignature
@Deprecated public java.lang.String getElementSignature()
Deprecated.
-
isNonNegative
public boolean isNonNegative()
-
isPrimitive
public boolean isPrimitive()
-
getRegisterNumber
public int getRegisterNumber()
-
getSignature
public java.lang.String getSignature()
-
getConstant
public java.lang.Object getConstant()
Returns a constant value for this Item, if known. NOTE: if the value is a constant Class object, the constant value returned is the name of the class. if the value is an array of known length, the constant value returned is its length (Integer)
-
getFieldAnnotation
@Deprecated public FieldAnnotation getFieldAnnotation()
Deprecated.Use getXField instead
-
getXField
public XField getXField()
-
setSpecialKind
public void setSpecialKind(@SpecialKind int specialKind)
- Parameters:
specialKind
- The specialKind to set.
-
cloneAndSetSpecialKind
public OpcodeStack.Item cloneAndSetSpecialKind(@SpecialKind int specialKind)
-
getSpecialKind
@SpecialKind public int getSpecialKind()
- Returns:
- Returns the specialKind.
-
isBooleanNullnessValue
public boolean isBooleanNullnessValue()
- Returns:
- Returns the specialKind.
-
setUserValue
public void setUserValue(@Nullable java.lang.Object value)
attaches a detector specified value to this item
to use this method, detector should be annotated with
CustomUserValue
.- Parameters:
value
- the custom value to set- See Also:
OpcodeStack.CustomUserValue
-
getReturnValueOf
@CheckForNull public XMethod getReturnValueOf()
- Returns:
- if this value is the return value of a method, give the method invoked
-
couldBeZero
public boolean couldBeZero()
-
mustBeZero
public boolean mustBeZero()
-
getUserValue
@Nullable public java.lang.Object getUserValue()
gets the detector specified value for this item- Returns:
- the custom value
-
isServletParameterTainted
public boolean isServletParameterTainted()
-
setServletParameterTainted
public void setServletParameterTainted()
-
setIsServletWriter
public void setIsServletWriter()
-
isServletWriter
public boolean isServletWriter()
-
valueCouldBeNegative
public boolean valueCouldBeNegative()
-
getSpecialKindForAbs
@SpecialKind public int getSpecialKindForAbs()
-
getSpecialKindForRemainder
@SpecialKind public int getSpecialKindForRemainder()
-
checkForIntegerMinValue
public boolean checkForIntegerMinValue()
Value could be Integer.MIN_VALUE
-
mightRarelyBeNegative
public boolean mightRarelyBeNegative()
The result of applying Math.abs to a checkForIntegerMinValue() value
-
isInitialParameter
public boolean isInitialParameter()
- Returns:
- Returns the isInitialParameter.
-
isNull
public boolean isNull()
- Returns:
- Returns the isNull.
-
clearNewlyAllocated
public void clearNewlyAllocated()
-
isNewlyAllocated
public boolean isNewlyAllocated()
-
hasConstantValue
public boolean hasConstantValue(int value)
-
hasConstantValue
public boolean hasConstantValue(long value)
-
defineSpecialKind
@SpecialKind public static int defineSpecialKind(java.lang.String name)
Define a new special kind and name it as specified.- Parameters:
name
- Name of new special kind- Returns:
- int value to represent new special kind
- Since:
- 3.1.0
-
getSpecialKindName
public static java.util.Optional<java.lang.String> getSpecialKindName(@SpecialKind int specialKind)
- Parameters:
specialKind
- special kind to get name- Returns:
- just a name of specified @{link SpecialKind}, or empty
Optional
. - Since:
- 3.1.0
-
-