Loading src/main/java/tfm/graphlib/Main.java +13 −13 Original line number Diff line number Diff line Loading @@ -16,28 +16,28 @@ import java.io.FileNotFoundException; public class Main { public static void main(String[] args) throws FileNotFoundException { File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example2.java"); File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example1.java"); CompilationUnit compilationUnit = JavaParser.parse(file); CFGGraph cfgGraph = new CFGGraph() { @Override protected String getRootNodeData() { return "Start"; } }; // PDGGraph pdgGraph = new PDGGraph() { // CFGGraph cfgGraph = new CFGGraph() { // @Override // protected String getRootNodeData() { // return "Entry"; // return "Start"; // } // }; PDGGraph pdgGraph = new PDGGraph() { @Override protected String getRootNodeData() { return "Entry"; } }; VoidVisitor<Void> voidVisitor = new CFGVisitor(cfgGraph); VoidVisitor<PDGVertex> voidVisitor = new PDGVisitor(pdgGraph); compilationUnit.accept(voidVisitor, null); compilationUnit.accept(voidVisitor, pdgGraph.getRootVertex()); // compilationUnit.accept(new PDGVisitor(pdgGraph), pdgGraph.getRootVertex()); System.out.println(cfgGraph); System.out.println(cfgGraph.toGraphvizRepresentation()); System.out.println(pdgGraph); // System.out.println(cfgGraph.toGraphvizRepresentation()); } } src/main/java/tfm/graphlib/arcs/pdg/ControlDependencyArc.java +10 −2 Original line number Diff line number Diff line package tfm.graphlib.arcs.pdg; import tfm.graphlib.arcs.Arc; import tfm.graphlib.arcs.data.VoidArcData; import tfm.graphlib.arcs.data.ArcData; import tfm.graphlib.nodes.Vertex; public class ControlDependencyArc extends Arc<VoidArcData> { public class ControlDependencyArc extends Arc<ArcData> { public ControlDependencyArc(Vertex from, Vertex to) { super(from, to); Loading @@ -24,4 +24,12 @@ public class ControlDependencyArc extends Arc<VoidArcData> { public boolean isDataDependencyArrow() { return false; } @Override public String toString() { return String.format("ControlDependencyArc{%s -> %s}", ((Vertex) getFrom()).getId(), ((Vertex) getTo()).getId() ); } } src/main/java/tfm/graphlib/graphs/CFGGraph.java +0 −3 Original line number Diff line number Diff line package tfm.graphlib.graphs; import com.github.javaparser.ast.Node; import edg.graphlib.Arrow; import tfm.graphlib.arcs.cfg.ControlFlowArc; import tfm.graphlib.arcs.data.ArcData; import tfm.graphlib.arcs.data.VoidArcData; import tfm.graphlib.nodes.CFGVertex; public abstract class CFGGraph extends Graph<CFGVertex> { Loading src/main/java/tfm/graphlib/nodes/CFGVertex.java +0 −1 Original line number Diff line number Diff line package tfm.graphlib.nodes; import tfm.graphlib.arcs.data.ArcData; import tfm.graphlib.arcs.data.VoidArcData; import tfm.graphlib.graphs.Graph; Loading src/main/java/tfm/graphlib/nodes/PDGVertex.java +10 −8 Original line number Diff line number Diff line Loading @@ -14,29 +14,31 @@ public class PDGVertex extends Vertex { } public String toString() { List<Arc> dataFrom = new ArrayList<>(); List<Arc> dataTo = new ArrayList<>(); List<Arc> controlFrom = new ArrayList<>(); List<Arc> controlTo = new ArrayList<>(); List<Integer> dataFrom = new ArrayList<>(); List<Integer> dataTo = new ArrayList<>(); List<Integer> controlFrom = new ArrayList<>(); List<Integer> controlTo = new ArrayList<>(); getIncomingArrows().forEach(arrow -> { Arc arc = (Arc) arrow; Vertex from = (Vertex) arc.getFrom(); if (arc.isDataDependencyArrow()) { dataFrom.add(arc); dataFrom.add(from.getId()); } else if (arc.isControlDependencyArrow()) { controlFrom.add(arc); controlFrom.add(from.getId()); } }); getOutgoingArrows().forEach(arrow -> { Arc arc = (Arc) arrow; Vertex to = (Vertex) arc.getTo(); if (arc.isDataDependencyArrow()) { dataTo.add(arc); dataTo.add(to.getId()); } else if (arc.isControlDependencyArrow()) { controlTo.add(arc); controlTo.add(to.getId()); } }); Loading Loading
src/main/java/tfm/graphlib/Main.java +13 −13 Original line number Diff line number Diff line Loading @@ -16,28 +16,28 @@ import java.io.FileNotFoundException; public class Main { public static void main(String[] args) throws FileNotFoundException { File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example2.java"); File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example1.java"); CompilationUnit compilationUnit = JavaParser.parse(file); CFGGraph cfgGraph = new CFGGraph() { @Override protected String getRootNodeData() { return "Start"; } }; // PDGGraph pdgGraph = new PDGGraph() { // CFGGraph cfgGraph = new CFGGraph() { // @Override // protected String getRootNodeData() { // return "Entry"; // return "Start"; // } // }; PDGGraph pdgGraph = new PDGGraph() { @Override protected String getRootNodeData() { return "Entry"; } }; VoidVisitor<Void> voidVisitor = new CFGVisitor(cfgGraph); VoidVisitor<PDGVertex> voidVisitor = new PDGVisitor(pdgGraph); compilationUnit.accept(voidVisitor, null); compilationUnit.accept(voidVisitor, pdgGraph.getRootVertex()); // compilationUnit.accept(new PDGVisitor(pdgGraph), pdgGraph.getRootVertex()); System.out.println(cfgGraph); System.out.println(cfgGraph.toGraphvizRepresentation()); System.out.println(pdgGraph); // System.out.println(cfgGraph.toGraphvizRepresentation()); } }
src/main/java/tfm/graphlib/arcs/pdg/ControlDependencyArc.java +10 −2 Original line number Diff line number Diff line package tfm.graphlib.arcs.pdg; import tfm.graphlib.arcs.Arc; import tfm.graphlib.arcs.data.VoidArcData; import tfm.graphlib.arcs.data.ArcData; import tfm.graphlib.nodes.Vertex; public class ControlDependencyArc extends Arc<VoidArcData> { public class ControlDependencyArc extends Arc<ArcData> { public ControlDependencyArc(Vertex from, Vertex to) { super(from, to); Loading @@ -24,4 +24,12 @@ public class ControlDependencyArc extends Arc<VoidArcData> { public boolean isDataDependencyArrow() { return false; } @Override public String toString() { return String.format("ControlDependencyArc{%s -> %s}", ((Vertex) getFrom()).getId(), ((Vertex) getTo()).getId() ); } }
src/main/java/tfm/graphlib/graphs/CFGGraph.java +0 −3 Original line number Diff line number Diff line package tfm.graphlib.graphs; import com.github.javaparser.ast.Node; import edg.graphlib.Arrow; import tfm.graphlib.arcs.cfg.ControlFlowArc; import tfm.graphlib.arcs.data.ArcData; import tfm.graphlib.arcs.data.VoidArcData; import tfm.graphlib.nodes.CFGVertex; public abstract class CFGGraph extends Graph<CFGVertex> { Loading
src/main/java/tfm/graphlib/nodes/CFGVertex.java +0 −1 Original line number Diff line number Diff line package tfm.graphlib.nodes; import tfm.graphlib.arcs.data.ArcData; import tfm.graphlib.arcs.data.VoidArcData; import tfm.graphlib.graphs.Graph; Loading
src/main/java/tfm/graphlib/nodes/PDGVertex.java +10 −8 Original line number Diff line number Diff line Loading @@ -14,29 +14,31 @@ public class PDGVertex extends Vertex { } public String toString() { List<Arc> dataFrom = new ArrayList<>(); List<Arc> dataTo = new ArrayList<>(); List<Arc> controlFrom = new ArrayList<>(); List<Arc> controlTo = new ArrayList<>(); List<Integer> dataFrom = new ArrayList<>(); List<Integer> dataTo = new ArrayList<>(); List<Integer> controlFrom = new ArrayList<>(); List<Integer> controlTo = new ArrayList<>(); getIncomingArrows().forEach(arrow -> { Arc arc = (Arc) arrow; Vertex from = (Vertex) arc.getFrom(); if (arc.isDataDependencyArrow()) { dataFrom.add(arc); dataFrom.add(from.getId()); } else if (arc.isControlDependencyArrow()) { controlFrom.add(arc); controlFrom.add(from.getId()); } }); getOutgoingArrows().forEach(arrow -> { Arc arc = (Arc) arrow; Vertex to = (Vertex) arc.getTo(); if (arc.isDataDependencyArrow()) { dataTo.add(arc); dataTo.add(to.getId()); } else if (arc.isControlDependencyArrow()) { controlTo.add(arc); controlTo.add(to.getId()); } }); Loading