Commit 7eb19191 authored by Javier Costa's avatar Javier Costa
Browse files

Variable read/write to use/definition and introduced logger

parent 72e7f33e
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -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;

@@ -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) {
+6 −10
Original line number Diff line number Diff line
@@ -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> {

@@ -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() {
+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) {
@@ -27,6 +29,6 @@ public class Example1 {
                e = 3;
        }

        System.out.println(y);
        Logger.log(y);
    }
}
+3 −1
Original line number Diff line number Diff line
package tfm.programs;

import tfm.utils.Logger;

import java.util.Arrays;

public class Example2 {
@@ -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);
        }
    }
}
+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