public class CP extends StructuredAnalysis
DEBUG, DEBUG_IF, DEBUG_STATEMENTS, DEBUG_TRY, DEBUG_WHILE, MERGETYPE| Constructor and Description |
|---|
CP(ASTMethodNode analyze,
java.util.HashMap<java.lang.String,java.lang.Object> constantFields,
java.util.HashMap<java.lang.String,SootField> classNameFieldNameToSootFieldMapping) |
| Modifier and Type | Method and Description |
|---|---|
CPTuple |
checkForValueHints(ASTCondition cond,
CPFlowSet input,
boolean isElseBranch) |
DavaFlowSet |
cloneFlowSet(DavaFlowSet flowSet)
Make a clone of the flowset The implementor should know when they want a
shallow or deep clone
|
CPTuple |
createCPTupleIfPossible(Value a,
Value b,
CPFlowSet input) |
void |
createInitialInput() |
DavaFlowSet |
emptyFlowSet() |
java.lang.Object |
killButGetValueForUse(Local left,
CPFlowSet toReturn) |
DavaFlowSet |
newInitialFlow() |
DavaFlowSet |
processASTIfElseNode(ASTIfElseNode node,
DavaFlowSet input) |
DavaFlowSet |
processASTIfNode(ASTIfNode node,
DavaFlowSet input) |
DavaFlowSet |
processStatement(Stmt s,
DavaFlowSet input)
Specific stmts within AST Constructs are processed through this method.
|
DavaFlowSet |
processSwitchKey(Value key,
DavaFlowSet input)
Deal with the key in the switch construct
|
DavaFlowSet |
processSynchronizedLocal(Local local,
DavaFlowSet input)
To deal with the local used for synch blocks
|
DavaFlowSet |
processUnaryBinaryCondition(ASTUnaryBinaryCondition cond,
DavaFlowSet 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
separately.
|
void |
setMergeType() |
debug, debug, getAfterSet, getBeforeSet, getLabel, handleBreak, handleContinue, isDifferent, merge, mergeExplicitAndImplicit, print, process, processAbruptStatements, processASTDoWhileNode, processASTForLoopNode, processASTLabeledBlockNode, processASTMethodNode, processASTNode, processASTStatementSequenceNode, processASTSwitchNode, processASTSynchronizedBlockNode, processASTTryNode, processASTUnconditionalLoopNode, processASTWhileNode, processCondition, processSingleSubBodyNodepublic CP(ASTMethodNode analyze, java.util.HashMap<java.lang.String,java.lang.Object> constantFields, java.util.HashMap<java.lang.String,SootField> classNameFieldNameToSootFieldMapping)
public void createInitialInput()
public DavaFlowSet emptyFlowSet()
emptyFlowSet in class StructuredAnalysispublic void setMergeType()
setMergeType in class StructuredAnalysispublic DavaFlowSet newInitialFlow()
newInitialFlow in class StructuredAnalysispublic DavaFlowSet cloneFlowSet(DavaFlowSet flowSet)
StructuredAnalysiscloneFlowSet in class StructuredAnalysispublic DavaFlowSet processUnaryBinaryCondition(ASTUnaryBinaryCondition cond, DavaFlowSet input)
StructuredAnalysisprocessUnaryBinaryCondition in class StructuredAnalysispublic DavaFlowSet processSynchronizedLocal(Local local, DavaFlowSet input)
StructuredAnalysisprocessSynchronizedLocal in class StructuredAnalysispublic DavaFlowSet processSwitchKey(Value key, DavaFlowSet input)
StructuredAnalysisprocessSwitchKey in class StructuredAnalysispublic DavaFlowSet processStatement(Stmt s, DavaFlowSet input)
StructuredAnalysisprocessStatement in class StructuredAnalysispublic DavaFlowSet processASTIfNode(ASTIfNode node, DavaFlowSet input)
processASTIfNode in class StructuredAnalysispublic DavaFlowSet processASTIfElseNode(ASTIfElseNode node, DavaFlowSet input)
processASTIfElseNode in class StructuredAnalysispublic CPTuple checkForValueHints(ASTCondition cond, CPFlowSet input, boolean isElseBranch)