|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object soot.dava.toolkits.base.AST.structuredAnalysis.StructuredAnalysis
public abstract class StructuredAnalysis
Field Summary | |
---|---|
static boolean |
DEBUG
|
static boolean |
DEBUG_IF
|
static boolean |
DEBUG_STATEMENTS
|
static boolean |
DEBUG_TRY
|
static boolean |
DEBUG_WHILE
|
int |
MERGETYPE
|
Constructor Summary | |
---|---|
StructuredAnalysis()
|
Method Summary | |
---|---|
abstract Object |
cloneFlowSet(Object flowSet)
Make a clone of the flowset The implementor should know when they want a shallow or deep clone |
void |
debug(String debug)
|
void |
debug(String methodName,
String debug)
|
abstract DavaFlowSet |
emptyFlowSet()
|
Object |
getAfterSet(Object afterThis)
|
Object |
getBeforeSet(Object beforeThis)
|
String |
getLabel(ASTNode node)
returns label on the ASTNode null if the ASTNode cannot hold a label or if the label is null |
Object |
handleBreak(String label,
Object output,
ASTNode node)
Need to handleBreak stmts There can be explicit breaks (in which case label is non null) There can always be implicit breaks ASTNode is non null |
Object |
handleContinue(String label,
Object output,
ASTNode node)
Need to handleContinue stmts There can be explicit continues (in which case label is non null) There can always be implicit continues ASTNode is non null |
boolean |
isDifferent(Object oldObj,
Object newObj)
|
Object |
merge(Object obj1,
Object obj2)
|
Object |
mergeExplicitAndImplicit(String label,
DavaFlowSet output,
List explicitSet,
List implicitSet)
|
abstract Object |
newInitialFlow()
|
void |
print(Object toPrint)
|
Object |
process(Object body,
Object input)
|
Object |
processAbruptStatements(Stmt s,
DavaFlowSet input)
Whenever a statement has to be processed the first step is to invoke this method. |
Object |
processASTDoWhileNode(ASTDoWhileNode node,
Object input)
|
Object |
processASTForLoopNode(ASTForLoopNode node,
Object input)
|
Object |
processASTIfElseNode(ASTIfElseNode node,
Object input)
|
Object |
processASTIfNode(ASTIfNode node,
Object input)
|
Object |
processASTLabeledBlockNode(ASTLabeledBlockNode node,
Object input)
|
Object |
processASTMethodNode(ASTMethodNode node,
Object input)
|
Object |
processASTNode(ASTNode node,
Object input)
|
Object |
processASTStatementSequenceNode(ASTStatementSequenceNode node,
Object input)
|
Object |
processASTSwitchNode(ASTSwitchNode node,
Object input)
|
Object |
processASTSynchronizedBlockNode(ASTSynchronizedBlockNode node,
Object input)
|
Object |
processASTTryNode(ASTTryNode node,
Object input)
|
Object |
processASTUnconditionalLoopNode(ASTUnconditionalLoopNode node,
Object input)
|
Object |
processASTWhileNode(ASTWhileNode node,
Object input)
|
Object |
processCondition(ASTCondition cond,
Object input)
This implementation breaks down the aggregated condition to the terminal conditions which all have type ASTUnaryBinaryCondition. |
Object |
processSingleSubBodyNode(ASTNode node,
Object input)
This method is called from the specialized ASTNodes. |
abstract Object |
processStatement(Stmt s,
Object input)
Specific stmts within AST Constructs are processed through this method. |
abstract Object |
processSwitchKey(Value key,
Object input)
Deal with the key in the switch construct |
abstract Object |
processSynchronizedLocal(Local local,
Object input)
To deal with the local used for synch blocks |
abstract Object |
processUnaryBinaryCondition(ASTUnaryBinaryCondition cond,
Object input)
To have maximum flexibility in analyzing conditions the analysis API breaks down the aggregated conditions to simple unary or binary conditions user defined code can then deal with each condition separatly. |
abstract void |
setMergeType()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static boolean DEBUG
public static boolean DEBUG_IF
public static boolean DEBUG_WHILE
public static boolean DEBUG_STATEMENTS
public static boolean DEBUG_TRY
public int MERGETYPE
Constructor Detail |
---|
public StructuredAnalysis()
Method Detail |
---|
public abstract void setMergeType()
public abstract Object newInitialFlow()
public abstract DavaFlowSet emptyFlowSet()
public abstract Object cloneFlowSet(Object flowSet)
public abstract Object processStatement(Stmt s, Object input)
public abstract Object processUnaryBinaryCondition(ASTUnaryBinaryCondition cond, Object input)
public abstract Object processSynchronizedLocal(Local local, Object input)
public abstract Object processSwitchKey(Value key, Object input)
public void print(Object toPrint)
public Object processCondition(ASTCondition cond, Object input)
public Object process(Object body, Object input)
public Object processASTNode(ASTNode node, Object input)
public final Object processSingleSubBodyNode(ASTNode node, Object input)
public String getLabel(ASTNode node)
public Object processAbruptStatements(Stmt s, DavaFlowSet input)
public Object processASTMethodNode(ASTMethodNode node, Object input)
public Object processASTStatementSequenceNode(ASTStatementSequenceNode node, Object input)
public Object processASTLabeledBlockNode(ASTLabeledBlockNode node, Object input)
public Object processASTSynchronizedBlockNode(ASTSynchronizedBlockNode node, Object input)
public Object processASTIfNode(ASTIfNode node, Object input)
public Object processASTIfElseNode(ASTIfElseNode node, Object input)
public Object processASTWhileNode(ASTWhileNode node, Object input)
public Object processASTDoWhileNode(ASTDoWhileNode node, Object input)
public Object processASTUnconditionalLoopNode(ASTUnconditionalLoopNode node, Object input)
public Object processASTForLoopNode(ASTForLoopNode node, Object input)
public Object processASTSwitchNode(ASTSwitchNode node, Object input)
public Object processASTTryNode(ASTTryNode node, Object input)
public Object merge(Object obj1, Object obj2)
public Object mergeExplicitAndImplicit(String label, DavaFlowSet output, List explicitSet, List implicitSet)
public Object handleBreak(String label, Object output, ASTNode node)
public Object handleContinue(String label, Object output, ASTNode node)
public boolean isDifferent(Object oldObj, Object newObj)
public Object getBeforeSet(Object beforeThis)
public Object getAfterSet(Object afterThis)
public void debug(String methodName, String debug)
public void debug(String debug)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |