| Package | Description |
|---|---|
| com.ibm.wala.analysis.reflection |
This package provides functions to deal with reflection.
|
| com.ibm.wala.analysis.reflection.java7 | |
| com.ibm.wala.analysis.typeInference |
This package provides intraprocedural type inference over the SSA form.
|
| com.ibm.wala.classLoader |
This package provides functionality related to class loading and
management of loaded classes.
|
| com.ibm.wala.demandpa.flowgraph | |
| com.ibm.wala.demandpa.util | |
| com.ibm.wala.ipa.callgraph |
This package provides basic interfaces and functions for call graph
construction.
|
| com.ibm.wala.ipa.callgraph.impl |
This package provides some implementations of basic functions needed for
various call graph construction algorithms.
|
| com.ibm.wala.ipa.callgraph.propagation |
This package provides the base layer for propagation-based call graph
construction and pointer analysis.
|
| com.ibm.wala.ipa.callgraph.propagation.cfa |
This package provides RTA call graph
construction.
|
| com.ibm.wala.ipa.callgraph.propagation.rta |
This package provides CFA-style call graph
construction and pointer analysis.
|
| com.ibm.wala.ipa.cha |
This package provides functionality related to class hierarchies.
|
| com.ibm.wala.ipa.modref | |
| com.ibm.wala.ipa.summaries |
This package provides class hierarchy analysis.
|
| com.ibm.wala.types.annotations | |
| com.ibm.wala.types.generics | |
| com.ibm.wala.util.bytecode |
This package provides miscellaneous utilities for manipulating bytecode.
|
| com.ibm.wala.util.scope |
| Modifier and Type | Method and Description |
|---|---|
IClass |
FactoryBypassInterpreter.SpecializedFactoryMethod.getDeclaringClass() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
ReflectiveInvocationInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
JavaLangClassContextInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
GetMethodContextInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
GetClassContextInterpeter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
FactoryBypassInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
CloneInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
ClassNewInstanceContextInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
ClassFactoryContextInterpreter.recordFactoryType(CGNode node,
IClass klass) |
| Constructor and Description |
|---|
AbstractReflectionInterpreter.SpecializedMethod(IMethod method,
IClass declaringClass,
boolean isStatic,
boolean isFactory) |
AbstractReflectionInterpreter.SpecializedMethod(MethodReference method,
IClass declaringClass,
boolean isStatic,
boolean isFactory) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
MethodHandles.ContextInterpreterImpl.recordFactoryType(CGNode node,
IClass klass) |
| Modifier and Type | Method and Description |
|---|---|
IClass |
PointType.getIClass() |
IClass |
TypeAbstraction.getType()
This is here for convenience; it makes sense for Point and Cone Dispatch.
|
IClass |
PrimitiveType.getType() |
IClass |
PointType.getType() |
IClass |
ConeType.getType() |
| Constructor and Description |
|---|
ConeType(IClass type) |
PointType(IClass type) |
| Modifier and Type | Class and Description |
|---|---|
class |
ArrayClass
Implementation of
IClass for array classes. |
class |
BytecodeClass<T extends IClassLoader>
A class representing which originates in some form of bytecode.
|
class |
JVMClass<T extends IClassLoader>
Note that classes from JVML have some features that are not present in all "bytecode" languages currently supported.
|
class |
ShrikeClass
A class read from Shrike
|
class |
SyntheticClass
An
IClass that exists nowhere in bytecode. |
| Modifier and Type | Field and Description |
|---|---|
protected IClass |
SyntheticMethod.declaringClass |
protected IClass |
ShrikeBTMethod.declaringClass
A wrapper around the declaring class.
|
protected IClass |
BytecodeClass.superClass
superclass
|
| Modifier and Type | Field and Description |
|---|---|
protected Collection<IClass> |
BytecodeClass.allInterfaces
The IClasses that represent all interfaces this class implements (if it's a class) or extends (it it's an interface)
|
protected Map<TypeName,IClass> |
ClassLoaderImpl.loadedClasses
A mapping from class name (TypeName) to IClass
|
| Modifier and Type | Method and Description |
|---|---|
IClass |
SyntheticMethod.getDeclaringClass() |
IClass |
ShrikeBTMethod.getDeclaringClass() |
IClass |
IMember.getDeclaringClass()
Return the object that represents the declaring class
for this member.
|
IClass |
FieldImpl.getDeclaringClass() |
IClass |
ArrayClass.getElementClass() |
IClass |
ArrayClass.getInnermostElementClass() |
IClass |
IClass.getSuperclass() |
IClass |
BytecodeClass.getSuperclass() |
IClass |
ArrayClass.getSuperclass() |
IClass |
IClassLoader.lookupClass(TypeName className)
Find and return the IClass defined by this class loader that corresponds to the given class name.
|
IClass |
ClassLoaderImpl.lookupClass(TypeName className) |
IClass |
ArrayClassLoader.lookupClass(TypeName className,
IClassLoader delegator,
IClassHierarchy cha) |
| Modifier and Type | Method and Description |
|---|---|
protected Collection<IClass> |
BytecodeClass.computeAllInterfacesAsCollection() |
Collection<IClass> |
ArrayClass.getAllAncestorInterfaces() |
Collection<IClass> |
IClass.getAllImplementedInterfaces() |
Collection<IClass> |
BytecodeClass.getAllImplementedInterfaces() |
Collection<IClass> |
ArrayClass.getAllImplementedInterfaces() |
Collection<? extends IClass> |
IClass.getDirectInterfaces() |
Collection<? extends IClass> |
BytecodeClass.getDirectInterfaces() |
Collection<IClass> |
ArrayClass.getDirectInterfaces() |
Iterator<IClass> |
IClassLoader.iterateAllClasses() |
Iterator<IClass> |
ClassLoaderImpl.iterateAllClasses() |
| Modifier and Type | Method and Description |
|---|---|
Reader |
IClassLoader.getSource(IClass klass) |
Reader |
ClassLoaderImpl.getSource(IClass klass) |
String |
IClassLoader.getSourceFileName(IClass klass) |
String |
ClassLoaderImpl.getSourceFileName(IClass klass) |
| Modifier and Type | Method and Description |
|---|---|
void |
IClassLoader.removeAll(Collection<IClass> toRemove)
blow away references to any classes in the set
|
void |
ClassLoaderImpl.removeAll(Collection<IClass> toRemove) |
| Constructor and Description |
|---|
FieldImpl(IClass declaringClass,
FieldReference canonicalRef,
int accessFlags,
Collection<Annotation> annotations) |
FieldImpl(IClass declaringClass,
FieldReference canonicalRef,
int accessFlags,
Collection<Annotation> annotations,
TypeSignature sig) |
ShrikeBTMethod(IClass klass) |
ShrikeCTMethod(IClass klass,
int index) |
SyntheticMethod(IMethod method,
IClass declaringClass,
boolean isStatic,
boolean isFactory) |
SyntheticMethod(MethodReference method,
IClass declaringClass,
boolean isStatic,
boolean isFactory) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
DemandPointerFlowGraph.StatementVisitor.addExceptionDefConstraints(IR ir,
CGNode node,
List<ProgramCounter> peis,
PointerKey exceptionVar,
Set<IClass> catchClasses)
Generate constraints which assign exception values into an exception pointer
|
protected void |
AbstractFlowGraph.addExceptionDefConstraints(IR ir,
CGNode node,
List<ProgramCounter> peis,
PointerKey exceptionVar,
Set<IClass> catchClasses)
Generate constraints which assign exception values into an exception pointer
|
| Modifier and Type | Method and Description |
|---|---|
IClass |
ArrayContents.getDeclaringClass() |
| Modifier and Type | Method and Description |
|---|---|
IClass |
ClassTargetSelector.getAllocatedTarget(CGNode caller,
NewSiteReference site)
Given a calling node and a new site, return the type to be allocated.
|
static IClass |
ContextUtil.getConcreteClassFromContext(Context c) |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
MethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IClass receiver)
Given a calling node, a call site and (optionally) a dispatch type, return the target method to be called.
|
| Modifier and Type | Class and Description |
|---|---|
class |
FakeRootClass
A synthetic class for the fake root method.
|
| Modifier and Type | Method and Description |
|---|---|
IClass |
ClassHierarchyClassTargetSelector.getAllocatedTarget(CGNode caller,
NewSiteReference site) |
IClass |
FakeRootClass.getSuperclass() |
| Modifier and Type | Method and Description |
|---|---|
Collection<IClass> |
FakeRootClass.getAllAncestorInterfaces() |
Collection<IClass> |
FakeRootClass.getAllImplementedInterfaces() |
Collection<IClass> |
FakeRootClass.getDirectInterfaces() |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
ClassHierarchyMethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference call,
IClass receiver)
This target selector searches the class hierarchy for the method matching the signature of the call that is appropriate for the
receiver type.
|
| Constructor and Description |
|---|
AbstractRootMethod(MethodReference method,
IClass declaringClass,
IClassHierarchy cha,
AnalysisOptions options,
AnalysisCache cache) |
| Modifier and Type | Method and Description |
|---|---|
IClass |
StringConstantCharArray.getConcreteType() |
IClass |
InstanceKey.getConcreteType()
For now, we assert that each InstanceKey represents a set of classes which
are all of the same concrete type (modulo the fact that all arrays of
references are considered concrete type []Object;)
|
IClass |
FilteredPointerKey.SingleClassFilter.getConcreteType() |
IClass |
ConstantKey.getConcreteType() |
IClass |
ConcreteTypeKey.getConcreteType() |
IClass |
AllocationSite.getConcreteType() |
IClass |
AbstractTypeInNode.getConcreteType() |
IClass[] |
FilteredPointerKey.MultipleClassesFilter.getConcreteTypes() |
IClass |
PropagationCallGraphBuilder.getJavaLangObject() |
IClass |
ConcreteTypeKey.getType() |
| Modifier and Type | Method and Description |
|---|---|
static Set<IClass> |
SSAPropagationCallGraphBuilder.getCaughtExceptionTypes(SSAGetCaughtExceptionInstruction instruction,
IR ir) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
PropagationCallGraphBuilder.catches(Set<IClass> catchClasses,
IClass klass,
IClassHierarchy cha) |
protected int |
PointerKeyComparator.compareConcreteTypes(IClass k1,
IClass k2) |
protected com.ibm.wala.util.intset.IntSet |
PropagationCallGraphBuilder.filterForClass(com.ibm.wala.util.intset.IntSet S,
IClass klass) |
FilteredPointerKey |
PropagationCallGraphBuilder.getFilteredPointerKeyForLocal(CGNode node,
int valueNumber,
IClass filter) |
com.ibm.wala.util.intset.IntSet |
PropagationSystem.getInstanceKeysForClass(IClass klass) |
protected com.ibm.wala.util.intset.IntSet |
PropagationCallGraphBuilder.getInstanceKeysForClass(IClass klass) |
protected com.ibm.wala.util.intset.MutableIntSet |
PropagationCallGraphBuilder.getMutableInstanceKeysForClass(IClass klass) |
CGNode |
SSAPropagationCallGraphBuilder.ConstraintVisitor.getTargetForCall(CGNode caller,
CallSiteReference site,
IClass recv,
InstanceKey[] iKey) |
protected CGNode |
PropagationCallGraphBuilder.getTargetForCall(CGNode caller,
CallSiteReference site,
IClass recv,
InstanceKey[] iKey) |
static boolean |
ContainerUtil.isContainer(IClass c) |
protected boolean |
PropagationCallGraphBuilder.isJavaLangObject(IClass klass) |
protected boolean |
SSAPropagationCallGraphBuilder.ConstraintVisitor.isRootType(IClass klass) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
PropagationCallGraphBuilder.addAssignmentsForCatchPointerKey(PointerKey exceptionVar,
Set<IClass> catchClasses,
PointerKey e)
Generate a set of constraints to represent assignment to an exception variable in a catch clause.
|
protected void |
PropagationCallGraphBuilder.assignInstanceToCatch(PointerKey exceptionVar,
Set<IClass> catchClasses,
InstanceKey e)
Handle assign of a particular exception instance into an exception variable
|
static boolean |
PropagationCallGraphBuilder.catches(Set<IClass> catchClasses,
IClass klass,
IClassHierarchy cha) |
| Constructor and Description |
|---|
AbstractTypeInNode(CGNode node,
IClass type) |
AllocationSite(IMethod method,
NewSiteReference allocation,
IClass type) |
AllocationSiteInNode(CGNode node,
NewSiteReference allocation,
IClass type) |
ConcreteTypeKey(IClass type) |
ConstantKey(T value,
IClass valueClass) |
FilteredPointerKey.MultipleClassesFilter(IClass[] concreteType) |
FilteredPointerKey.SingleClassFilter(IClass concreteType) |
NormalAllocationInNode(CGNode node,
NewSiteReference allocation,
IClass type) |
SmushedAllocationSiteInNode(CGNode node,
IClass type) |
ZeroLengthArrayInNode(CGNode node,
NewSiteReference allocation,
IClass type) |
| Modifier and Type | Field and Description |
|---|---|
protected Map<CGNode,Set<IClass>> |
ZeroXInstanceKeys.smushMap
a Map from CGNode->Set
|
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
ContainerContextSelector.isContainer(IClass C) |
boolean |
ZeroXInstanceKeys.isInteresting(IClass C)
A class is "interesting" iff we distinguish instances of the class
|
static boolean |
ZeroXInstanceKeys.isStackTraceElement(IClass c) |
static boolean |
ZeroXInstanceKeys.isStringish(IClass C) |
static boolean |
ZeroXInstanceKeys.isThrowable(IClass c) |
boolean |
FallbackContextInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
DelegatingSSAContextInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
DefaultSSAInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
ContextInsensitiveSSAInterpreter.recordFactoryType(CGNode node,
IClass klass) |
| Modifier and Type | Field and Description |
|---|---|
protected HashSet<IClass> |
AbstractRTABuilder.allocatedClasses
set of classes (IClass) discovered to be allocated
|
protected Set<IClass> |
AbstractRTABuilder.clinitProcessed
set of classes whose clinit are processed
|
| Modifier and Type | Method and Description |
|---|---|
IClass |
RTASelectorKey.getTypeFilter() |
| Modifier and Type | Method and Description |
|---|---|
Set<IClass> |
AbstractRTABuilder.getAllocatedTypes() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
AbstractRTABuilder.processClassInitializer(IClass klass) |
boolean |
RTAContextInterpreter.recordFactoryType(CGNode node,
IClass klass)
record that the "factory" method of a node should be interpreted to allocate a particular class.
|
boolean |
DelegatingRTAContextInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
DefaultRTAInterpreter.recordFactoryType(CGNode node,
IClass klass) |
boolean |
ContextInsensitiveRTAInterpreter.recordFactoryType(CGNode node,
IClass klass) |
protected void |
BasicRTABuilder.updateSetsForNewClass(IClass klass,
InstanceKey iKey,
CGNode node,
NewSiteReference n)
Perform needed bookkeeping when a new class is discovered.
|
protected abstract void |
AbstractRTABuilder.updateSetsForNewClass(IClass klass,
InstanceKey iKey,
CGNode node,
NewSiteReference ns)
Perform needed bookkeeping when a new class is discovered.
|
| Modifier and Type | Method and Description |
|---|---|
static TypeBasedPointerAnalysis |
TypeBasedPointerAnalysis.make(AnalysisOptions options,
Collection<IClass> klasses,
CallGraph cg) |
| Constructor and Description |
|---|
TypeBasedHeapModel(AnalysisOptions options,
Collection<IClass> klasses,
CallGraph cg) |
| Modifier and Type | Method and Description |
|---|---|
IClass |
IClassHierarchy.getLeastCommonSuperclass(IClass A,
IClass B) |
IClass |
ClassHierarchy.getLeastCommonSuperclass(IClass a,
IClass b) |
IClass |
IClassHierarchy.getRootClass() |
IClass |
ClassHierarchy.getRootClass() |
IClass |
IClassHierarchy.lookupClass(TypeReference A)
Load a class using one of the loaders specified for this class hierarchy
|
IClass |
ClassHierarchy.lookupClass(TypeReference a)
Find a class in this class hierarchy.
|
| Modifier and Type | Method and Description |
|---|---|
Collection<IClass> |
IClassHierarchy.computeSubClasses(TypeReference type)
Return set of all subclasses of type in the Class Hierarchy
|
Collection<IClass> |
ClassHierarchy.computeSubClasses(TypeReference type)
Return set of all subclasses of type in the Class Hierarchy TODO: Tune this implementation.
|
Collection<IClass> |
IClassHierarchy.getImmediateSubclasses(IClass klass) |
Collection<IClass> |
ClassHierarchy.getImmediateSubclasses(IClass klass) |
Set<IClass> |
IClassHierarchy.getImplementors(TypeReference type) |
Set<IClass> |
ClassHierarchy.getImplementors(TypeReference type)
TODO: tune this if necessary
|
Iterator<IClass> |
ClassHierarchy.iterator() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
IClassHierarchy.addClass(IClass klass) |
boolean |
ClassHierarchy.addClass(IClass klass) |
Collection<IClass> |
IClassHierarchy.getImmediateSubclasses(IClass klass) |
Collection<IClass> |
ClassHierarchy.getImmediateSubclasses(IClass klass) |
IClass |
IClassHierarchy.getLeastCommonSuperclass(IClass A,
IClass B) |
IClass |
ClassHierarchy.getLeastCommonSuperclass(IClass a,
IClass b) |
int |
IClassHierarchy.getNumber(IClass c) |
int |
ClassHierarchy.getNumber(IClass c) |
int |
IClassHierarchy.getNumberOfImmediateSubclasses(IClass klass) |
int |
ClassHierarchy.getNumberOfImmediateSubclasses(IClass klass) |
Set<IMethod> |
IClassHierarchy.getPossibleTargets(IClass receiverClass,
MethodReference ref)
Find the possible targets of a call to a method reference where the receiver is of a certain type
|
Set<IMethod> |
ClassHierarchy.getPossibleTargets(IClass declaredClass,
MethodReference ref)
Find the possible receivers of a call to a method reference
|
boolean |
IClassHierarchy.implementsInterface(IClass c,
IClass i)
Does c implement i?
|
boolean |
ClassHierarchy.implementsInterface(IClass c,
IClass i)
Does c implement i?
|
boolean |
IClassHierarchy.isAssignableFrom(IClass c1,
IClass c2)
Does an expression c1 x := c2 y typecheck?
i.e.
|
boolean |
ClassHierarchy.isAssignableFrom(IClass c1,
IClass c2)
Does an expression c1 x := c2 y typecheck?
i.e.
|
boolean |
IClassHierarchy.isRootClass(IClass c) |
boolean |
ClassHierarchy.isRootClass(IClass c) |
boolean |
IClassHierarchy.isSubclassOf(IClass c,
IClass T)
Is c a subclass of T?
|
boolean |
ClassHierarchy.isSubclassOf(IClass c,
IClass t)
Is c a subclass of T?
|
IField |
IClassHierarchy.resolveField(IClass klass,
FieldReference f) |
IField |
ClassHierarchy.resolveField(IClass klass,
FieldReference f) |
IMethod |
IClassHierarchy.resolveMethod(IClass receiverClass,
Selector selector)
Return the unique receiver of an invocation of method on an object of type declaringClass
|
IMethod |
ClassHierarchy.resolveMethod(IClass receiverClass,
Selector selector)
Return the unique target of an invocation of method on an object of type declaringClass
|
| Modifier and Type | Method and Description |
|---|---|
Map<IClass,Set<IField>> |
ModRefFieldAccess.getMod(CGNode node) |
Map<IClass,Set<IField>> |
ModRefFieldAccess.getRef(CGNode node) |
Map<IClass,Set<IField>> |
ModRefFieldAccess.getTransitiveMod(CGNode node) |
Map<IClass,Set<IField>> |
ModRefFieldAccess.getTransitiveRef(CGNode node) |
| Modifier and Type | Class and Description |
|---|---|
class |
BypassSyntheticClass
A synthetic implementation of a class
|
class |
LambdaSummaryClass |
| Modifier and Type | Method and Description |
|---|---|
IClass |
BypassClassTargetSelector.getAllocatedTarget(CGNode caller,
NewSiteReference site) |
IClass |
BypassSyntheticClass.getRealType() |
IClass |
LambdaSummaryClass.getSuperclass() |
IClass |
BypassSyntheticClass.getSuperclass() |
IClass |
BypassSyntheticClassLoader.lookupClass(TypeName className) |
| Modifier and Type | Method and Description |
|---|---|
Collection<IClass> |
LambdaSummaryClass.getAllImplementedInterfaces() |
Collection<IClass> |
BypassSyntheticClass.getAllImplementedInterfaces() |
Collection<? extends IClass> |
LambdaSummaryClass.getDirectInterfaces() |
Collection<IClass> |
BypassSyntheticClass.getDirectInterfaces() |
Iterator<IClass> |
BypassSyntheticClassLoader.iterateAllClasses() |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
LambdaMethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IClass receiver) |
IMethod |
BypassMethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IClass dispatchType)
Check to see if a particular call site should be bypassed, before checking normal resolution of the receiver.
|
Reader |
BypassSyntheticClassLoader.getSource(IClass klass) |
String |
BypassSyntheticClassLoader.getSourceFileName(IClass klass) |
boolean |
MethodBypass.isAllocatable(IClass klass)
Are we allowed to allocate (for analysis purposes) an instance of a given type? By default, the answer is yes iff T is not
abstract.
|
void |
BypassSyntheticClassLoader.registerClass(TypeName className,
IClass theClass)
Register the existence of a new synthetic class
|
| Modifier and Type | Method and Description |
|---|---|
void |
BypassSyntheticClassLoader.removeAll(Collection<IClass> toRemove) |
| Constructor and Description |
|---|
BypassSyntheticClass(IClass realType,
IClassLoader loader,
IClassHierarchy cha) |
SummarizedMethod(MethodReference ref,
MethodSummary summary,
IClass declaringClass) |
SummarizedMethodWithNames(MethodReference ref,
MethodSummary summary,
IClass declaringClass,
Map<Integer,Atom> localNames) |
SummarizedMethodWithNames(MethodReference ref,
VolatileMethodSummary summary,
IClass declaringClass) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
Annotations.hasAnnotation(IClass c,
TypeName type)
Does a particular class have a particular annotation?
|
| Modifier and Type | Method and Description |
|---|---|
static IClass |
ClassTypeSignature.lookupClass(IClassHierarchy cha,
ClassTypeSignature sig) |
| Modifier and Type | Method and Description |
|---|---|
static ClassSignature |
ClassSignature.getClassSignature(IClass klass) |
static FormalTypeParameter[] |
FormalTypeParameter.getTypeParameters(IClass klass) |
| Modifier and Type | Method and Description |
|---|---|
IClass |
BytecodeStream.declaringClass()
Returns the declaring class that this bytecode stream is from
|
| Modifier and Type | Method and Description |
|---|---|
static Set<IMethod> |
JUnitEntryPoints.getSetUpTearDownMethods(IClass testClass)
Get the "setUp" and "tearDown" methods in the given class
|
static boolean |
JUnitEntryPoints.isJUnitTestCase(IClass klass)
Check if the given class is a JUnit test class.
|
Copyright © 2015. All rights reserved.