Loading src/main/java/tfm/exec/Main.java +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ import java.util.Optional; public class Main { public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "cfg/Eval_4.java"; public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "sdg/Example1.java"; public static final String GRAPH = GraphLog.SDG; public static final String METHOD = "main"; Loading src/main/java/tfm/graphs/pdg/PDG.java +0 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,6 @@ import tfm.graphs.GraphWithRootNode; import tfm.graphs.Sliceable; import tfm.graphs.cfg.CFG; import tfm.nodes.GraphNode; import tfm.nodes.MethodRootNode; import tfm.nodes.NodeFactory; import tfm.slicing.Slice; import tfm.slicing.SlicingCriterion; import tfm.utils.NodeNotFoundException; Loading src/main/java/tfm/graphs/sdg/MethodCallReplacer.java +19 −8 Original line number Diff line number Diff line package tfm.graphs.sdg; import tfm.nodes.GraphNode; import tfm.utils.Context; import tfm.utils.Logger; import java.util.Optional; class MethodCallReplacer { private SDG sdg; Loading @@ -9,13 +15,18 @@ class MethodCallReplacer { } public void replace() { // this.sdg.getContextPDGGraphMap() // .forEach((context, pdgGraph) -> { // if (!context.getCurrentMethod().isPresent()) { // return; // Should NOT happen // } // // context.getCurrentMethod().get().accept(new MethodCallReplacerVisitor(pdgGraph), context); // }); this.sdg.getContexts().stream() .filter(context -> context.getCurrentMethod().isPresent()) .forEach(context -> { Logger.log("MethodCallReplacer", context); Optional<GraphNode<?>> optionalRootNode = this.sdg.getRootNode(context); if (!optionalRootNode.isPresent()) { return; // We don't have visited the code (e.g. the MethodDeclaration for a method call) } optionalRootNode.get().getAstNode().accept(new MethodCallReplacerVisitor(), context); }); } } src/main/java/tfm/graphs/sdg/MethodCallReplacerVisitor.java +10 −1 Original line number Diff line number Diff line Loading @@ -9,6 +9,9 @@ import com.github.javaparser.ast.expr.VariableDeclarationExpr; import com.github.javaparser.ast.stmt.ExpressionStmt; import com.github.javaparser.ast.type.Type; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; import tfm.graphs.pdg.PDG; import tfm.nodes.GraphNode; import tfm.utils.Context; Loading @@ -23,23 +26,29 @@ class MethodCallReplacerVisitor extends VoidVisitorAdapter<Context> { private PDG pdg; public MethodCallReplacerVisitor() { } public MethodCallReplacerVisitor(PDG pdg) { this.pdg = pdg; } @Override public void visit(MethodCallExpr methodCallExpr, Context context) { Logger.log("MethodCallReplacerVisitor", context); Optional<MethodDeclaration> optionalCallingMethod = methodCallExpr.getScope().isPresent() ? shouldMakeCallWithScope(methodCallExpr, context) : shouldMakeCallWithNoScope(methodCallExpr, context); if (!optionalCallingMethod.isPresent()) { Logger.log("Discarding: " + methodCallExpr); return; } // todo make call Logger.log(String.format("Method '%s' called", optionalCallingMethod.get().getNameAsString())); Logger.log(String.format("%s | Method '%s' called", methodCallExpr, optionalCallingMethod.get().getNameAsString())); } private Optional<MethodDeclaration> shouldMakeCallWithScope(MethodCallExpr methodCallExpr, Context context) { Loading src/main/java/tfm/graphs/sdg/MethodDeclarationReplacer.javadeleted 100644 → 0 +0 −12 Original line number Diff line number Diff line package tfm.graphs.sdg; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; public class MethodDeclarationReplacer extends VoidVisitorAdapter<Void> { @Override public void visit(MethodDeclaration methodDeclaration, Void arg) { } } Loading
src/main/java/tfm/exec/Main.java +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ import java.util.Optional; public class Main { public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "cfg/Eval_4.java"; public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "sdg/Example1.java"; public static final String GRAPH = GraphLog.SDG; public static final String METHOD = "main"; Loading
src/main/java/tfm/graphs/pdg/PDG.java +0 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,6 @@ import tfm.graphs.GraphWithRootNode; import tfm.graphs.Sliceable; import tfm.graphs.cfg.CFG; import tfm.nodes.GraphNode; import tfm.nodes.MethodRootNode; import tfm.nodes.NodeFactory; import tfm.slicing.Slice; import tfm.slicing.SlicingCriterion; import tfm.utils.NodeNotFoundException; Loading
src/main/java/tfm/graphs/sdg/MethodCallReplacer.java +19 −8 Original line number Diff line number Diff line package tfm.graphs.sdg; import tfm.nodes.GraphNode; import tfm.utils.Context; import tfm.utils.Logger; import java.util.Optional; class MethodCallReplacer { private SDG sdg; Loading @@ -9,13 +15,18 @@ class MethodCallReplacer { } public void replace() { // this.sdg.getContextPDGGraphMap() // .forEach((context, pdgGraph) -> { // if (!context.getCurrentMethod().isPresent()) { // return; // Should NOT happen // } // // context.getCurrentMethod().get().accept(new MethodCallReplacerVisitor(pdgGraph), context); // }); this.sdg.getContexts().stream() .filter(context -> context.getCurrentMethod().isPresent()) .forEach(context -> { Logger.log("MethodCallReplacer", context); Optional<GraphNode<?>> optionalRootNode = this.sdg.getRootNode(context); if (!optionalRootNode.isPresent()) { return; // We don't have visited the code (e.g. the MethodDeclaration for a method call) } optionalRootNode.get().getAstNode().accept(new MethodCallReplacerVisitor(), context); }); } }
src/main/java/tfm/graphs/sdg/MethodCallReplacerVisitor.java +10 −1 Original line number Diff line number Diff line Loading @@ -9,6 +9,9 @@ import com.github.javaparser.ast.expr.VariableDeclarationExpr; import com.github.javaparser.ast.stmt.ExpressionStmt; import com.github.javaparser.ast.type.Type; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; import tfm.graphs.pdg.PDG; import tfm.nodes.GraphNode; import tfm.utils.Context; Loading @@ -23,23 +26,29 @@ class MethodCallReplacerVisitor extends VoidVisitorAdapter<Context> { private PDG pdg; public MethodCallReplacerVisitor() { } public MethodCallReplacerVisitor(PDG pdg) { this.pdg = pdg; } @Override public void visit(MethodCallExpr methodCallExpr, Context context) { Logger.log("MethodCallReplacerVisitor", context); Optional<MethodDeclaration> optionalCallingMethod = methodCallExpr.getScope().isPresent() ? shouldMakeCallWithScope(methodCallExpr, context) : shouldMakeCallWithNoScope(methodCallExpr, context); if (!optionalCallingMethod.isPresent()) { Logger.log("Discarding: " + methodCallExpr); return; } // todo make call Logger.log(String.format("Method '%s' called", optionalCallingMethod.get().getNameAsString())); Logger.log(String.format("%s | Method '%s' called", methodCallExpr, optionalCallingMethod.get().getNameAsString())); } private Optional<MethodDeclaration> shouldMakeCallWithScope(MethodCallExpr methodCallExpr, Context context) { Loading
src/main/java/tfm/graphs/sdg/MethodDeclarationReplacer.javadeleted 100644 → 0 +0 −12 Original line number Diff line number Diff line package tfm.graphs.sdg; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; public class MethodDeclarationReplacer extends VoidVisitorAdapter<Void> { @Override public void visit(MethodDeclaration methodDeclaration, Void arg) { } }