Commit f7e163f7 authored by Javier Costa's avatar Javier Costa
Browse files

Slicing

parent 737ead94
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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()
        );
    }

}
+8 −0
Original line number Diff line number Diff line
@@ -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());
+9 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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();
+0 −2
Original line number Diff line number Diff line
@@ -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;
+8 −6
Original line number Diff line number Diff line
@@ -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;

@@ -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;

@@ -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));
@@ -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();
@@ -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