Class ClosestAbruptTargetFinder
- java.lang.Object
-
- soot.dava.toolkits.base.AST.analysis.AnalysisAdapter
-
- soot.dava.toolkits.base.AST.analysis.DepthFirstAdapter
-
- soot.dava.toolkits.base.AST.traversals.ClosestAbruptTargetFinder
-
- All Implemented Interfaces:
Analysis
public class ClosestAbruptTargetFinder extends DepthFirstAdapter
This class has been created because we need the immediate target of a implicit break/continue statement i.e. a break/continue statement which does not break/continue a particular label explicitly. Notice that this is only allowed for while do while, unconditional loop for loop switch construct. Notice continue is not allowed for switch also Explicit breaks can on the other hand break any label (that on a construct) which we are not worried about in this analysis
-
-
Field Summary
-
Fields inherited from class soot.dava.toolkits.base.AST.analysis.DepthFirstAdapter
DEBUG
-
-
Constructor Summary
Constructors Constructor Description ClosestAbruptTargetFinder(Singletons.Global g)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ASTNodegetTarget(DAbruptStmt ab)To be invoked by other analyses.voidinASTDoWhileNode(ASTDoWhileNode node)voidinASTForLoopNode(ASTForLoopNode node)voidinASTSwitchNode(ASTSwitchNode node)voidinASTUnconditionalLoopNode(ASTUnconditionalLoopNode node)voidinASTWhileNode(ASTWhileNode node)Following methods add a new node to the end of the nodeStack arrayList Since that node becomes the closest target of an implicit break or continuevoidinStmt(Stmt s)voidoutASTDoWhileNode(ASTDoWhileNode node)voidoutASTForLoopNode(ASTForLoopNode node)voidoutASTSwitchNode(ASTSwitchNode node)voidoutASTUnconditionalLoopNode(ASTUnconditionalLoopNode node)voidoutASTWhileNode(ASTWhileNode node)Following methods remove the last node from the end of the nodeStack arrayList Since the previous node now becomes the closest target to an implicit break or continuestatic ClosestAbruptTargetFinderv()-
Methods inherited from class soot.dava.toolkits.base.AST.analysis.DepthFirstAdapter
caseArrayRef, caseASTAndCondition, caseASTBinaryCondition, caseASTDoWhileNode, caseASTForLoopNode, caseASTIfElseNode, caseASTIfNode, caseASTLabeledBlockNode, caseASTMethodNode, caseASTOrCondition, caseASTStatementSequenceNode, caseASTSwitchNode, caseASTSynchronizedBlockNode, caseASTTryNode, caseASTUnaryCondition, caseASTUnconditionalLoopNode, caseASTWhileNode, caseBinopExpr, caseCastExpr, caseDefinitionStmt, caseDVariableDeclarationStmt, caseExpr, caseExprOrRefValueBox, caseInstanceFieldRef, caseInstanceInvokeExpr, caseInstanceOfExpr, caseInvokeExpr, caseInvokeStmt, caseNewArrayExpr, caseNewMultiArrayExpr, caseRef, caseReturnStmt, caseStaticFieldRef, caseStmt, caseThrowStmt, caseType, caseUnopExpr, caseValue, debug, decideCaseExpr, decideCaseExprOrRef, decideCaseRef, inArrayRef, inASTAndCondition, inASTBinaryCondition, inASTIfElseNode, inASTIfNode, inASTLabeledBlockNode, inASTMethodNode, inASTOrCondition, inASTStatementSequenceNode, inASTSynchronizedBlockNode, inASTTryNode, inASTUnaryCondition, inBinopExpr, inCastExpr, inDefinitionStmt, inDVariableDeclarationStmt, inExpr, inExprOrRefValueBox, inInstanceFieldRef, inInstanceInvokeExpr, inInstanceOfExpr, inInvokeExpr, inInvokeStmt, inNewArrayExpr, inNewMultiArrayExpr, inRef, inReturnStmt, inStaticFieldRef, inThrowStmt, inType, inUnopExpr, inValue, normalRetrieving, outArrayRef, outASTAndCondition, outASTBinaryCondition, outASTIfElseNode, outASTIfNode, outASTLabeledBlockNode, outASTMethodNode, outASTOrCondition, outASTStatementSequenceNode, outASTSynchronizedBlockNode, outASTTryNode, outASTUnaryCondition, outBinopExpr, outCastExpr, outDefinitionStmt, outDVariableDeclarationStmt, outExpr, outExprOrRefValueBox, outInstanceFieldRef, outInstanceInvokeExpr, outInstanceOfExpr, outInvokeExpr, outInvokeStmt, outNewArrayExpr, outNewMultiArrayExpr, outRef, outReturnStmt, outStaticFieldRef, outStmt, outThrowStmt, outType, outUnopExpr, outValue
-
Methods inherited from class soot.dava.toolkits.base.AST.analysis.AnalysisAdapter
defaultCase
-
-
-
-
Constructor Detail
-
ClosestAbruptTargetFinder
public ClosestAbruptTargetFinder(Singletons.Global g)
-
-
Method Detail
-
v
public static ClosestAbruptTargetFinder v()
-
getTarget
public ASTNode getTarget(DAbruptStmt ab)
To be invoked by other analyses. Given an abrupt stmt as input this method will locate the closest target and return it
-
inASTWhileNode
public void inASTWhileNode(ASTWhileNode node)
Following methods add a new node to the end of the nodeStack arrayList Since that node becomes the closest target of an implicit break or continue- Overrides:
inASTWhileNodein classDepthFirstAdapter
-
inASTDoWhileNode
public void inASTDoWhileNode(ASTDoWhileNode node)
- Overrides:
inASTDoWhileNodein classDepthFirstAdapter
-
inASTUnconditionalLoopNode
public void inASTUnconditionalLoopNode(ASTUnconditionalLoopNode node)
- Overrides:
inASTUnconditionalLoopNodein classDepthFirstAdapter
-
inASTForLoopNode
public void inASTForLoopNode(ASTForLoopNode node)
- Overrides:
inASTForLoopNodein classDepthFirstAdapter
-
inASTSwitchNode
public void inASTSwitchNode(ASTSwitchNode node)
- Overrides:
inASTSwitchNodein classDepthFirstAdapter
-
outASTWhileNode
public void outASTWhileNode(ASTWhileNode node)
Following methods remove the last node from the end of the nodeStack arrayList Since the previous node now becomes the closest target to an implicit break or continue- Overrides:
outASTWhileNodein classDepthFirstAdapter
-
outASTDoWhileNode
public void outASTDoWhileNode(ASTDoWhileNode node)
- Overrides:
outASTDoWhileNodein classDepthFirstAdapter
-
outASTUnconditionalLoopNode
public void outASTUnconditionalLoopNode(ASTUnconditionalLoopNode node)
- Overrides:
outASTUnconditionalLoopNodein classDepthFirstAdapter
-
outASTForLoopNode
public void outASTForLoopNode(ASTForLoopNode node)
- Overrides:
outASTForLoopNodein classDepthFirstAdapter
-
outASTSwitchNode
public void outASTSwitchNode(ASTSwitchNode node)
- Overrides:
outASTSwitchNodein classDepthFirstAdapter
-
inStmt
public void inStmt(Stmt s)
- Overrides:
inStmtin classDepthFirstAdapter
-
-