Package edu.umd.cs.findbugs.ba
Class XFactory
- java.lang.Object
-
- edu.umd.cs.findbugs.ba.XFactory
-
public class XFactory extends java.lang.Object
Factory methods for creating XMethod objects.- Author:
- David Hovemeyer
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
DEBUG_CIRCULARITY
static boolean
DEBUG_UNRESOLVED
-
Constructor Summary
Constructors Constructor Description XFactory()
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addCalledMethod(MethodDescriptor m)
void
addEmptyArrayField(XField f)
void
addFunctionThatMightBeMistakenForProcedures(MethodDescriptor m)
boolean
addReflectiveClasses(ClassDescriptor c)
java.util.Collection<XField>
allFields()
static void
assertDottedClassName(java.lang.String className)
static void
assertSlashedClassName(java.lang.String className)
void
canonicalizeAll()
static java.lang.String
canonicalizeString(java.lang.String s)
static <E extends ClassMember>
intcompare(E lhs, E rhs)
Compare XMethod or XField object objects.static XField
createReferencedXField(DismantleBytecode visitor)
static XMethod
createReferencedXMethod(DismantleBytecode visitor)
static XField
createXField(FieldDescriptor desc)
static XField
createXField(FieldAnnotation f)
static XField
createXField(PreorderVisitor visitor)
Create an XField object from the field currently being visited by the given PreorderVisitor.static XField
createXField(java.lang.String className, java.lang.String fieldName, java.lang.String fieldSignature, boolean isStatic)
Create an XField objectstatic XField
createXField(java.lang.String className, org.apache.bcel.classfile.Field field)
Create an XField object from a BCEL Field.static XField
createXField(org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.classfile.Field field)
static XField
createXField(org.apache.bcel.generic.FieldInstruction fieldInstruction, org.apache.bcel.generic.ConstantPoolGen cpg)
static XField
createXFieldUsingSlashedClassName(java.lang.String className, java.lang.String fieldName, java.lang.String fieldSignature, boolean isStatic)
Create an XField objectstatic XMethod
createXMethod(JavaClassAndMethod classAndMethod)
static XMethod
createXMethod(MethodDescriptor desc)
static XMethod
createXMethod(MethodAnnotation ma)
static XMethod
createXMethod(PreorderVisitor visitor)
Create an XMethod object from the method currently being visited by the given PreorderVisitor.static XMethod
createXMethod(java.lang.String className, java.lang.String methodName, java.lang.String methodSig, boolean isStatic)
static XMethod
createXMethod(java.lang.String className, org.apache.bcel.classfile.Method method)
Create an XMethod object from a BCEL Method.static XMethod
createXMethod(org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.classfile.Method method)
Create an XMethod object from a BCEL Method.static XMethod
createXMethod(org.apache.bcel.generic.InvokeInstruction invokeInstruction, org.apache.bcel.generic.ConstantPoolGen cpg)
Create an XMethod object from an InvokeInstruction.static XMethod
createXMethod(org.apache.bcel.generic.MethodGen methodGen)
static XMethod
createXMethodUsingSlashedClassName(java.lang.String className, java.lang.String methodName, java.lang.String methodSig, boolean isStatic)
java.util.Set<XMethod>
getCalledMethods()
static XField
getExactXField(FieldDescriptor desc)
static XField
getExactXField(java.lang.String className, java.lang.String name, java.lang.String signature, boolean isStatic)
Get an XField object exactly matching given class, name, and signature.static XField
getExactXField(java.lang.String className, org.apache.bcel.classfile.Field f)
java.util.Set<ClassDescriptor>
getReflectiveClasses()
XClass
getXClass(ClassDescriptor classDescriptor)
Get the XClass object providing information about the class named by the given ClassDescriptor.void
intern(XClass c)
boolean
isCalled(XMethod m)
boolean
isCalledDirectlyOrIndirectly(XMethod m)
boolean
isEmptyArrayField(XField f)
boolean
isFunctionshatMightBeMistakenForProcedures(MethodDescriptor m)
boolean
isInterned(XMethod m)
Deprecated.boolean
isReflectiveClass(ClassDescriptor c)
boolean
nameAndSignatureIsCalled(XMethod m)
static void
profile()
-
-
-
Method Detail
-
canonicalizeAll
public void canonicalizeAll()
-
intern
public void intern(XClass c)
-
allFields
public java.util.Collection<XField> allFields()
-
addCalledMethod
public void addCalledMethod(MethodDescriptor m)
-
addEmptyArrayField
public void addEmptyArrayField(XField f)
-
isEmptyArrayField
public boolean isEmptyArrayField(@CheckForNull XField f)
-
isCalled
public boolean isCalled(XMethod m)
-
getCalledMethods
public java.util.Set<XMethod> getCalledMethods()
-
addFunctionThatMightBeMistakenForProcedures
public void addFunctionThatMightBeMistakenForProcedures(MethodDescriptor m)
-
isFunctionshatMightBeMistakenForProcedures
public boolean isFunctionshatMightBeMistakenForProcedures(MethodDescriptor m)
-
getReflectiveClasses
public java.util.Set<ClassDescriptor> getReflectiveClasses()
-
isReflectiveClass
public boolean isReflectiveClass(ClassDescriptor c)
-
addReflectiveClasses
public boolean addReflectiveClasses(ClassDescriptor c)
-
isCalledDirectlyOrIndirectly
public boolean isCalledDirectlyOrIndirectly(XMethod m)
-
nameAndSignatureIsCalled
public boolean nameAndSignatureIsCalled(XMethod m)
-
isInterned
@Deprecated public boolean isInterned(XMethod m)
Deprecated.
-
canonicalizeString
public static java.lang.String canonicalizeString(java.lang.String s)
-
createXMethod
public static XMethod createXMethod(java.lang.String className, org.apache.bcel.classfile.Method method)
Create an XMethod object from a BCEL Method.- Parameters:
className
- the class to which the Method belongsmethod
- the Method- Returns:
- an XMethod representing the Method
-
createXMethod
public static XMethod createXMethod(org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.classfile.Method method)
Create an XMethod object from a BCEL Method.- Parameters:
javaClass
- the class to which the Method belongsmethod
- the Method- Returns:
- an XMethod representing the Method
-
assertDottedClassName
public static void assertDottedClassName(@DottedClassName java.lang.String className)
-
assertSlashedClassName
public static void assertSlashedClassName(@SlashedClassName java.lang.String className)
-
createXMethodUsingSlashedClassName
public static XMethod createXMethodUsingSlashedClassName(@SlashedClassName java.lang.String className, java.lang.String methodName, java.lang.String methodSig, boolean isStatic)
- Parameters:
className
-methodName
-methodSig
-isStatic
-- Returns:
- the created XMethod
-
createXMethod
public static XMethod createXMethod(@DottedClassName java.lang.String className, java.lang.String methodName, java.lang.String methodSig, boolean isStatic)
- Parameters:
className
-methodName
-methodSig
-isStatic
-- Returns:
- the created XMethod
-
createXMethod
public static XMethod createXMethod(MethodDescriptor desc)
-
profile
public static void profile()
-
createXMethod
public static XMethod createXMethod(MethodAnnotation ma)
-
createXFieldUsingSlashedClassName
public static XField createXFieldUsingSlashedClassName(@SlashedClassName java.lang.String className, java.lang.String fieldName, java.lang.String fieldSignature, boolean isStatic)
Create an XField object- Parameters:
className
-fieldName
-fieldSignature
-isStatic
-- Returns:
- the created XField
-
createXField
public static XField createXField(@DottedClassName java.lang.String className, java.lang.String fieldName, java.lang.String fieldSignature, boolean isStatic)
Create an XField object- Parameters:
className
-fieldName
-fieldSignature
-isStatic
-- Returns:
- the created XField
-
createXField
public static XField createXField(org.apache.bcel.generic.FieldInstruction fieldInstruction, org.apache.bcel.generic.ConstantPoolGen cpg)
-
createReferencedXField
public static XField createReferencedXField(DismantleBytecode visitor)
-
createReferencedXMethod
public static XMethod createReferencedXMethod(DismantleBytecode visitor)
-
createXField
public static XField createXField(FieldAnnotation f)
-
createXField
public static XField createXField(org.apache.bcel.classfile.JavaClass javaClass, org.apache.bcel.classfile.Field field)
-
createXField
public static XField createXField(java.lang.String className, org.apache.bcel.classfile.Field field)
Create an XField object from a BCEL Field.- Parameters:
className
- the name of the Java class containing the fieldfield
- the Field within the JavaClass- Returns:
- the created XField
-
getExactXField
public static XField getExactXField(@SlashedClassName java.lang.String className, java.lang.String name, java.lang.String signature, boolean isStatic)
Get an XField object exactly matching given class, name, and signature. May return an unresolved object (if the class can't be found, or does not directly declare named field).- Parameters:
className
- name of class containing the fieldname
- name of fieldsignature
- field signatureisStatic
- field access flags- Returns:
- XField exactly matching class name, field name, and field signature
-
getExactXField
@Nonnull public static XField getExactXField(@SlashedClassName java.lang.String className, org.apache.bcel.classfile.Field f)
-
getExactXField
@Nonnull public static XField getExactXField(FieldDescriptor desc)
-
createXField
public static XField createXField(FieldDescriptor desc)
-
createXMethod
public static XMethod createXMethod(org.apache.bcel.generic.InvokeInstruction invokeInstruction, org.apache.bcel.generic.ConstantPoolGen cpg)
Create an XMethod object from an InvokeInstruction.- Parameters:
invokeInstruction
- the InvokeInstructioncpg
- ConstantPoolGen from the class containing the instruction- Returns:
- XMethod representing the method called by the InvokeInstruction
-
createXMethod
public static XMethod createXMethod(PreorderVisitor visitor)
Create an XMethod object from the method currently being visited by the given PreorderVisitor.- Parameters:
visitor
- the PreorderVisitor- Returns:
- the XMethod representing the method currently being visited
-
createXField
public static XField createXField(PreorderVisitor visitor)
Create an XField object from the field currently being visited by the given PreorderVisitor.- Parameters:
visitor
- the PreorderVisitor- Returns:
- the XField representing the method currently being visited
-
createXMethod
public static XMethod createXMethod(org.apache.bcel.generic.MethodGen methodGen)
-
createXMethod
public static XMethod createXMethod(JavaClassAndMethod classAndMethod)
-
getXClass
@CheckForNull public XClass getXClass(ClassDescriptor classDescriptor)
Get the XClass object providing information about the class named by the given ClassDescriptor.- Parameters:
classDescriptor
- a ClassDescriptor- Returns:
- an XClass object providing information about the class, or null if the class cannot be found
-
compare
public static <E extends ClassMember> int compare(E lhs, E rhs)
Compare XMethod or XField object objects. All methods that implement XMethod or XField should delegate to this method when implementing compareTo(Object) if the right-hand object implements XField or XMethod.- Parameters:
lhs
- an XMethod or XFieldrhs
- an XMethod or XField- Returns:
- comparison of lhs and rhs
-
-