Loading src/main/java/tfm/arcs/cfg/ControlFlowArc.java +8 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,12 @@ public class ControlFlowArc extends Arc<VoidArcData> { return false; } @Override public String toString() { return String.format("ControlFlowArc{%s -> %s}", getFromNode().getId(), getToNode().getId() ); } } src/main/java/tfm/arcs/pdg/DataDependencyArc.java +8 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,14 @@ public class DataDependencyArc extends Arc<VariableArcData> { return true; } @Override public String toString() { return String.format("DataDependencyArc{%s, %s -> %s}", getData(), getFromNode().getId(), getToNode().getId()); } @Override public String toGraphvizRepresentation() { return String.format("%s [style=dashed, color=red, label=\"%s\"];", super.toGraphvizRepresentation(), getData().toString()); Loading src/main/java/tfm/exec/CFGLog.java +9 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import guru.nidi.graphviz.engine.Format; import guru.nidi.graphviz.engine.Graphviz; import tfm.graphs.CFGGraph; import tfm.graphs.Graph; import tfm.graphs.PDGGraph; import tfm.visitors.CFGVisitor; import java.io.File; Loading @@ -14,6 +15,14 @@ import java.util.Arrays; public class CFGLog extends GraphLog<CFGGraph, CFGVisitor> { public CFGLog() { } public CFGLog(CFGGraph graph) { this.graph = graph; } @Override public void visit(Node node) { this.graph = new CFGGraph(); Loading src/main/java/tfm/exec/GraphLog.java +0 −2 Original line number Diff line number Diff line Loading @@ -45,8 +45,6 @@ public abstract class GraphLog<G extends Graph<?>, V extends VoidVisitor<?>> { ); Logger.log(graph.toGraphvizRepresentation()); Logger.log(); generatePNGs(); } public abstract void generatePNGs() throws IOException; Loading src/main/java/tfm/exec/Main.java +8 −6 Original line number Diff line number Diff line Loading @@ -4,6 +4,10 @@ import com.github.javaparser.JavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.Node; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.visitor.GenericVisitor; import tfm.graphs.CFGGraph; import tfm.graphs.Graph; import tfm.graphs.PDGGraph; import tfm.utils.Logger; import tfm.utils.Utils; Loading @@ -14,7 +18,7 @@ import java.util.Optional; public class Main { public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "pdg/Example2.java"; public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "pdg/Example1.java"; public static final String METHOD = ""; public static final String GRAPH = GraphLog.PDG; Loading @@ -25,9 +29,6 @@ public class Main { File file = new File(PROGRAM); Node root = JavaParser.parse(file); // GraphLog GraphLog<?, ?> graphLog = getGraphLog(args.length == 1 ? args[0] : GRAPH); if (!METHOD.isEmpty()) { Optional<MethodDeclaration> methodDeclarationOptional = root.findFirst(MethodDeclaration.class, methodDeclaration -> Objects.equals(methodDeclaration.getNameAsString(), METHOD)); Loading @@ -40,7 +41,9 @@ public class Main { root = methodDeclarationOptional.get(); } // Generate Graph and measure time // GraphLog GraphLog<?, ?> graphLog = getGraphLog(args.length == 1 ? args[0] : GRAPH); long t0 = System.nanoTime(); graphLog.visit(root); long tf = System.nanoTime(); Loading @@ -65,7 +68,6 @@ public class Main { graphLog = new CFGLog(); break; case GraphLog.PDG: // main(new String[]{GraphLog.CFG}); graphLog = new PDGLog(); break; default: Loading Loading
src/main/java/tfm/arcs/cfg/ControlFlowArc.java +8 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,12 @@ public class ControlFlowArc extends Arc<VoidArcData> { return false; } @Override public String toString() { return String.format("ControlFlowArc{%s -> %s}", getFromNode().getId(), getToNode().getId() ); } }
src/main/java/tfm/arcs/pdg/DataDependencyArc.java +8 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,14 @@ public class DataDependencyArc extends Arc<VariableArcData> { return true; } @Override public String toString() { return String.format("DataDependencyArc{%s, %s -> %s}", getData(), getFromNode().getId(), getToNode().getId()); } @Override public String toGraphvizRepresentation() { return String.format("%s [style=dashed, color=red, label=\"%s\"];", super.toGraphvizRepresentation(), getData().toString()); Loading
src/main/java/tfm/exec/CFGLog.java +9 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import guru.nidi.graphviz.engine.Format; import guru.nidi.graphviz.engine.Graphviz; import tfm.graphs.CFGGraph; import tfm.graphs.Graph; import tfm.graphs.PDGGraph; import tfm.visitors.CFGVisitor; import java.io.File; Loading @@ -14,6 +15,14 @@ import java.util.Arrays; public class CFGLog extends GraphLog<CFGGraph, CFGVisitor> { public CFGLog() { } public CFGLog(CFGGraph graph) { this.graph = graph; } @Override public void visit(Node node) { this.graph = new CFGGraph(); Loading
src/main/java/tfm/exec/GraphLog.java +0 −2 Original line number Diff line number Diff line Loading @@ -45,8 +45,6 @@ public abstract class GraphLog<G extends Graph<?>, V extends VoidVisitor<?>> { ); Logger.log(graph.toGraphvizRepresentation()); Logger.log(); generatePNGs(); } public abstract void generatePNGs() throws IOException; Loading
src/main/java/tfm/exec/Main.java +8 −6 Original line number Diff line number Diff line Loading @@ -4,6 +4,10 @@ import com.github.javaparser.JavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.Node; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.visitor.GenericVisitor; import tfm.graphs.CFGGraph; import tfm.graphs.Graph; import tfm.graphs.PDGGraph; import tfm.utils.Logger; import tfm.utils.Utils; Loading @@ -14,7 +18,7 @@ import java.util.Optional; public class Main { public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "pdg/Example2.java"; public static final String PROGRAM = Utils.PROGRAMS_FOLDER + "pdg/Example1.java"; public static final String METHOD = ""; public static final String GRAPH = GraphLog.PDG; Loading @@ -25,9 +29,6 @@ public class Main { File file = new File(PROGRAM); Node root = JavaParser.parse(file); // GraphLog GraphLog<?, ?> graphLog = getGraphLog(args.length == 1 ? args[0] : GRAPH); if (!METHOD.isEmpty()) { Optional<MethodDeclaration> methodDeclarationOptional = root.findFirst(MethodDeclaration.class, methodDeclaration -> Objects.equals(methodDeclaration.getNameAsString(), METHOD)); Loading @@ -40,7 +41,9 @@ public class Main { root = methodDeclarationOptional.get(); } // Generate Graph and measure time // GraphLog GraphLog<?, ?> graphLog = getGraphLog(args.length == 1 ? args[0] : GRAPH); long t0 = System.nanoTime(); graphLog.visit(root); long tf = System.nanoTime(); Loading @@ -65,7 +68,6 @@ public class Main { graphLog = new CFGLog(); break; case GraphLog.PDG: // main(new String[]{GraphLog.CFG}); graphLog = new PDGLog(); break; default: Loading