public class RefClassFinder
extends java.lang.Object
Constructor and Description |
---|
RefClassFinder(PCDManager pcdm,
boolean failOnDependentJar,
boolean noWarnOnDependentJar)
An instance of RefClassFinder is created once per session, passing it the global options that do not change
|
Modifier and Type | Method and Description |
---|---|
void |
addToAffectedClassNames(java.lang.String className) |
void |
findAbstractSubtypesWithSameNameMethod(ClassInfo intfInfo,
java.lang.String mName,
java.lang.String mSig)
Find all interfaces and abstract classes that implement the given interface and declare or inherit
a method with the given name.
|
void |
findAllProjectClasses(ClassInfo fieldClassInfo,
int fieldNo)
Find all project classes that can access field fieldNo of class fieldClassInfo.
|
void |
findClassesDeclaringField(java.lang.String name,
java.lang.String signature,
boolean isStatic,
java.lang.String packageToLookIn)
Find all project classes declaring a static field with the given name.
|
void |
findConcreteSubclasses(ClassInfo targetClass)
For a given class C, find all concrete direct subclasses, and all direct concrente subclasses of C's direct
or indirect abstract subclasses.
|
void |
findConcreteSubclassesNotOverridingAbstractMethod(ClassInfo targetClass,
ClassInfo methodDeclaringClass,
int methodNo)
Find any concrete subclasses of targetClass that don't override or inherit a concrete implementation
of the given method.
|
void |
findDiffPackageAndNotSubReferencingClasses1(ClassInfo classInfo)
For the given class p.C, find each project class X referencing C, that is not a member of
package p and is not a direct or indirect subclass of C's directly enclosing class.
|
void |
findDiffPackageAndSubReferencingClasses1(ClassInfo classInfo)
For class p.C, find each project class X referencing C, which is not a member of package p and
whose direct or indirect superclass is C's directly enclosing class.
|
void |
findDiffPackageAndSubReferencingClassesForField(ClassInfo classInfo,
int fieldNo)
Find all project classes that reference the given field, which are in different
packages and are direct or indirect subclasses of the member's declaring class
(protected -> default transformation).
|
void |
findDiffPackageAndSubReferencingClassesForMethod(ClassInfo classInfo,
int methodNo)
Find all project classes that reference the given method, which are in different
packages and are direct or indirect subclasses of the member's declaring class
(protected -> default transformation)
|
void |
findDiffPackageReferencingClasses1(ClassInfo classInfo)
For class p.C, find each project class X referencing C, which is not a member of package p.
|
void |
findDiffPackageReferencingClassesForField(ClassInfo classInfo,
int fieldNo)
Find all project classes that reference the given field and which are in
different packages.
|
void |
findDiffPackageReferencingClassesForMethod(ClassInfo classInfo,
int methodNo)
Find all project classes that reference the given method and which are in
different packages.
|
void |
findDirectlyAndOtherwiseImplementingConcreteClasses(ClassInfo intfInfo)
Find all non-abstract project classes that implement the given interface or any of its
subclasses directly, and all non-abstract classes that are direct descendants of abstract
classes that implement the given interface directly or indirectly.
|
void |
findDirectSubclasses(ClassInfo classInfo)
Find all project classes which are direct subclasses of the given class
|
void |
findReferencingClasses0(ClassInfo classInfo)
Find all project classes that reference class with the given name
(but not its array class) directly from the constantpool.
|
void |
findReferencingClasses1(ClassInfo classInfo)
For class p.C, find each project class X referencing C, whose top level enclosing
class is different from that of C.
|
void |
findReferencingClasses2(ClassInfo classInfo1,
ClassInfo classInfo2)
Find all project classes that reference both of the classes with the
given names (or array classes of one or both) directly or indirectly from the
constantpool, as a type of a data field, as a type in a method signature or a
thrown exception, as a directly/indirectly implemented interface or a
direct/indirect superclass.
|
void |
findReferencingClassesForDeletedClass(ClassInfo classInfo)
Used for deleted classes.
|
void |
findReferencingClassesForField(ClassInfo classInfo,
int fieldNo)
Find all project classes that reference the given field.
|
void |
findReferencingClassesForMethod(ClassInfo classInfo,
int methodNo)
Find all project classes that reference the given method.
|
void |
findRefsToMethodsThrowingException(ClassInfo excClassInfo)
Find all project classes that reference any method that throws the given exception.
|
void |
findSubclassesReimplementingMethod(ClassInfo classInfo,
int methodNo)
Find all project classes that re-implement the given method and that are
direct/indirect subclasses of this method's declaring class.
|
void |
findThisPackageOrSubReferencingClasses1(ClassInfo classInfo)
For class p.C, find each project class X referencing C, whose direct or indirect superclass
is C's directly enclosing class, or which is a member of package p, whose top level enclosing
class is different from that of C.
|
void |
findThisPackageReferencingClasses1(ClassInfo classInfo)
For class p.C, find each project class X referencing C, which is a member of package p and whose
top level enclosing class is different from that of C.
|
java.lang.String[] |
getAffectedClassNames()
Returns the names of project classes that were found potentially affec
by the changes to the checked class.
|
void |
initialize(java.lang.String checkedClassName,
boolean checkedClassIsFromJar)
This method is called every time we are going to check a new class
|
public RefClassFinder(PCDManager pcdm, boolean failOnDependentJar, boolean noWarnOnDependentJar)
public void initialize(java.lang.String checkedClassName, boolean checkedClassIsFromJar)
public java.lang.String[] getAffectedClassNames()
public void findAllProjectClasses(ClassInfo fieldClassInfo, int fieldNo)
public void findReferencingClasses0(ClassInfo classInfo)
public void findReferencingClassesForDeletedClass(ClassInfo classInfo)
public void findDiffPackageAndNotSubReferencingClasses1(ClassInfo classInfo)
public void findReferencingClasses1(ClassInfo classInfo)
public void findThisPackageOrSubReferencingClasses1(ClassInfo classInfo)
public void findThisPackageReferencingClasses1(ClassInfo classInfo)
public void findDiffPackageReferencingClasses1(ClassInfo classInfo)
public void findDiffPackageAndSubReferencingClasses1(ClassInfo classInfo)
public void findReferencingClasses2(ClassInfo classInfo1, ClassInfo classInfo2)
public void findDirectSubclasses(ClassInfo classInfo)
public void findDirectlyAndOtherwiseImplementingConcreteClasses(ClassInfo intfInfo)
public void findAbstractSubtypesWithSameNameMethod(ClassInfo intfInfo, java.lang.String mName, java.lang.String mSig)
public void findReferencingClassesForField(ClassInfo classInfo, int fieldNo)
public void findDiffPackageReferencingClassesForField(ClassInfo classInfo, int fieldNo)
public void findDiffPackageAndSubReferencingClassesForField(ClassInfo classInfo, int fieldNo)
public void findReferencingClassesForMethod(ClassInfo classInfo, int methodNo)
public void findDiffPackageReferencingClassesForMethod(ClassInfo classInfo, int methodNo)
public void findDiffPackageAndSubReferencingClassesForMethod(ClassInfo classInfo, int methodNo)
public void findSubclassesReimplementingMethod(ClassInfo classInfo, int methodNo)
public void findConcreteSubclasses(ClassInfo targetClass)
public void findConcreteSubclassesNotOverridingAbstractMethod(ClassInfo targetClass, ClassInfo methodDeclaringClass, int methodNo)
public void findRefsToMethodsThrowingException(ClassInfo excClassInfo)
public void findClassesDeclaringField(java.lang.String name, java.lang.String signature, boolean isStatic, java.lang.String packageToLookIn)
public void addToAffectedClassNames(java.lang.String className)