Loading src/main/java/tfm/Main.java +22 −2 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ import tfm.graphs.CFGGraph; import tfm.graphs.Graph; import tfm.graphs.PDGGraph; import tfm.nodes.PDGVertex; import tfm.utils.Logger; import tfm.variables.Variable; import tfm.visitors.CFGVisitor; import tfm.visitors.PDGVisitor; Loading @@ -15,14 +17,32 @@ import java.io.FileNotFoundException; public class Main { private static long t0; public static void main(String[] args) throws FileNotFoundException { File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example2.java"); CompilationUnit compilationUnit = JavaParser.parse(file); t0 = System.nanoTime(); Graph<?> graph = pdg(file, compilationUnit); System.out.println(graph); System.out.println(graph.toGraphvizRepresentation()); long tt = System.nanoTime(); Logger.log( "****************************\n" + "* GRAPH *\n" + "****************************" ); Logger.log(graph); Logger.log( "****************************\n" + "* GRAPHVIZ *\n" + "****************************" ); Logger.log(graph.toGraphvizRepresentation()); Logger.log(); Logger.format("Done in %.2f ms", (tt - t0) / 10e6); } public static CFGGraph cfg(File file, CompilationUnit cu) { Loading src/main/java/tfm/graphs/PDGGraph.java +6 −10 Original line number Diff line number Diff line Loading @@ -6,13 +6,9 @@ import tfm.arcs.pdg.DataDependencyArc; import tfm.nodes.PDGVertex; import tfm.nodes.Vertex; import tfm.variables.*; import tfm.variables.actions.VariableAction; import tfm.variables.actions.VariableDeclaration; import tfm.variables.actions.VariableRead; import tfm.variables.actions.VariableWrite; import java.util.*; import java.util.stream.Collectors; import tfm.variables.actions.VariableUse; import tfm.variables.actions.VariableDefinition; public abstract class PDGGraph extends Graph<PDGVertex> { Loading Loading @@ -59,12 +55,12 @@ public abstract class PDGGraph extends Graph<PDGVertex> { return variableSet.addVariable(name, new VariableDeclaration(declarationNode)); } public void addVariableWrite(String variable, Vertex currentNode) { variableSet.addWrite(variable, new VariableWrite(currentNode)); public void addVariableDefinition(String variable, Vertex currentNode) { variableSet.addDefinition(variable, new VariableDefinition(currentNode)); } public void addVariableRead(String variable, Vertex currentNode) { variableSet.addRead(variable, new VariableRead(currentNode)); public void addVariableUse(String variable, Vertex currentNode) { variableSet.addUse(variable, new VariableUse(currentNode)); } public VariableSet getVariableSet() { Loading src/main/java/tfm/programs/Example1.java +3 −1 Original line number Diff line number Diff line package tfm.programs; import tfm.utils.Logger; public class Example1 { public static void main(String[] args) { Loading Loading @@ -27,6 +29,6 @@ public class Example1 { e = 3; } System.out.println(y); Logger.log(y); } } src/main/java/tfm/programs/Example2.java +3 −1 Original line number Diff line number Diff line package tfm.programs; import tfm.utils.Logger; import java.util.Arrays; public class Example2 { Loading @@ -16,7 +18,7 @@ public class Example2 { Iterable<Integer> integers = Arrays.asList(1, 2, 3); for(int i : integers) { System.out.println(i); Logger.log(i); } } } src/main/java/tfm/utils/Logger.java 0 → 100644 +22 −0 Original line number Diff line number Diff line package tfm.utils; import java.util.Objects; public class Logger { public static void log() { log(""); } public static void log(Object object) { log(Objects.toString(object)); } public static void log(String message) { System.out.println(message); } public static void format(String message, Object... args) { System.out.printf(message, args); } } Loading
src/main/java/tfm/Main.java +22 −2 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ import tfm.graphs.CFGGraph; import tfm.graphs.Graph; import tfm.graphs.PDGGraph; import tfm.nodes.PDGVertex; import tfm.utils.Logger; import tfm.variables.Variable; import tfm.visitors.CFGVisitor; import tfm.visitors.PDGVisitor; Loading @@ -15,14 +17,32 @@ import java.io.FileNotFoundException; public class Main { private static long t0; public static void main(String[] args) throws FileNotFoundException { File file = new File("/home/jacosro/IdeaProjects/TFM/src/main/java/tfm/programs/Example2.java"); CompilationUnit compilationUnit = JavaParser.parse(file); t0 = System.nanoTime(); Graph<?> graph = pdg(file, compilationUnit); System.out.println(graph); System.out.println(graph.toGraphvizRepresentation()); long tt = System.nanoTime(); Logger.log( "****************************\n" + "* GRAPH *\n" + "****************************" ); Logger.log(graph); Logger.log( "****************************\n" + "* GRAPHVIZ *\n" + "****************************" ); Logger.log(graph.toGraphvizRepresentation()); Logger.log(); Logger.format("Done in %.2f ms", (tt - t0) / 10e6); } public static CFGGraph cfg(File file, CompilationUnit cu) { Loading
src/main/java/tfm/graphs/PDGGraph.java +6 −10 Original line number Diff line number Diff line Loading @@ -6,13 +6,9 @@ import tfm.arcs.pdg.DataDependencyArc; import tfm.nodes.PDGVertex; import tfm.nodes.Vertex; import tfm.variables.*; import tfm.variables.actions.VariableAction; import tfm.variables.actions.VariableDeclaration; import tfm.variables.actions.VariableRead; import tfm.variables.actions.VariableWrite; import java.util.*; import java.util.stream.Collectors; import tfm.variables.actions.VariableUse; import tfm.variables.actions.VariableDefinition; public abstract class PDGGraph extends Graph<PDGVertex> { Loading Loading @@ -59,12 +55,12 @@ public abstract class PDGGraph extends Graph<PDGVertex> { return variableSet.addVariable(name, new VariableDeclaration(declarationNode)); } public void addVariableWrite(String variable, Vertex currentNode) { variableSet.addWrite(variable, new VariableWrite(currentNode)); public void addVariableDefinition(String variable, Vertex currentNode) { variableSet.addDefinition(variable, new VariableDefinition(currentNode)); } public void addVariableRead(String variable, Vertex currentNode) { variableSet.addRead(variable, new VariableRead(currentNode)); public void addVariableUse(String variable, Vertex currentNode) { variableSet.addUse(variable, new VariableUse(currentNode)); } public VariableSet getVariableSet() { Loading
src/main/java/tfm/programs/Example1.java +3 −1 Original line number Diff line number Diff line package tfm.programs; import tfm.utils.Logger; public class Example1 { public static void main(String[] args) { Loading Loading @@ -27,6 +29,6 @@ public class Example1 { e = 3; } System.out.println(y); Logger.log(y); } }
src/main/java/tfm/programs/Example2.java +3 −1 Original line number Diff line number Diff line package tfm.programs; import tfm.utils.Logger; import java.util.Arrays; public class Example2 { Loading @@ -16,7 +18,7 @@ public class Example2 { Iterable<Integer> integers = Arrays.asList(1, 2, 3); for(int i : integers) { System.out.println(i); Logger.log(i); } } }
src/main/java/tfm/utils/Logger.java 0 → 100644 +22 −0 Original line number Diff line number Diff line package tfm.utils; import java.util.Objects; public class Logger { public static void log() { log(""); } public static void log(Object object) { log(Objects.toString(object)); } public static void log(String message) { System.out.println(message); } public static void format(String message, Object... args) { System.out.printf(message, args); } }