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, processSingleSubBodyNode
public 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 StructuredAnalysis
public void setMergeType()
setMergeType
in class StructuredAnalysis
public DavaFlowSet newInitialFlow()
newInitialFlow
in class StructuredAnalysis
public DavaFlowSet cloneFlowSet(DavaFlowSet flowSet)
StructuredAnalysis
cloneFlowSet
in class StructuredAnalysis
public DavaFlowSet processUnaryBinaryCondition(ASTUnaryBinaryCondition cond, DavaFlowSet input)
StructuredAnalysis
processUnaryBinaryCondition
in class StructuredAnalysis
public DavaFlowSet processSynchronizedLocal(Local local, DavaFlowSet input)
StructuredAnalysis
processSynchronizedLocal
in class StructuredAnalysis
public DavaFlowSet processSwitchKey(Value key, DavaFlowSet input)
StructuredAnalysis
processSwitchKey
in class StructuredAnalysis
public DavaFlowSet processStatement(Stmt s, DavaFlowSet input)
StructuredAnalysis
processStatement
in class StructuredAnalysis
public DavaFlowSet processASTIfNode(ASTIfNode node, DavaFlowSet input)
processASTIfNode
in class StructuredAnalysis
public DavaFlowSet processASTIfElseNode(ASTIfElseNode node, DavaFlowSet input)
processASTIfElseNode
in class StructuredAnalysis
public CPTuple checkForValueHints(ASTCondition cond, CPFlowSet input, boolean isElseBranch)