Commit 070d4868 authored by Javier Costa's avatar Javier Costa
Browse files

Slicer + GraphLog

parent bb3acd94
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ import java.io.File;
import java.io.IOException;
import java.util.Arrays;

public class CFGLog extends GraphLog<CFGGraph, CFGVisitor> {
public class CFGLog extends GraphLog<CFGGraph> {

    public CFGLog() {

@@ -27,9 +27,7 @@ public class CFGLog extends GraphLog<CFGGraph, CFGVisitor> {
    public void visit(Node node) {
        this.graph = new CFGGraph();

        this.visitor = new CFGVisitor(graph);

        node.accept(visitor, null);
        node.accept(new CFGVisitor(graph), null);
    }

    @Override
+1 −2
Original line number Diff line number Diff line
@@ -11,14 +11,13 @@ import java.io.IOException;
import java.util.Comparator;
import java.util.stream.Collectors;

public abstract class GraphLog<G extends Graph<?>, V extends VoidVisitor<?>> {
public abstract class GraphLog<G extends Graph<?>> {

    static final String CFG = "cfg";
    static final String PDG = "pdg";
    static final String SDG = "sdg";

    G graph;
    V visitor;

    protected String pngName;

+3 −3
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ public class Main {
        }

        // GraphLog
        GraphLog<?, ?> graphLog = getGraphLog(args.length == 1 ? args[0] : GRAPH);
        GraphLog<?> graphLog = getGraphLog(args.length == 1 ? args[0] : GRAPH);

        long t0 = System.nanoTime();
        graphLog.visit(root);
@@ -60,8 +60,8 @@ public class Main {
        Logger.format("Graph generated in %.2f ms", tt / 10e6);
    }

    private static GraphLog<?, ?> getGraphLog(String graph) throws IOException {
        GraphLog<?, ?> graphLog = null;
    private static GraphLog<?> getGraphLog(String graph) throws IOException {
        GraphLog<?> graphLog = null;

        switch (graph) {
            case GraphLog.CFG:
+5 −7
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;

public class PDGLog extends GraphLog<PDGGraph, PDGCFGVisitor> {
public class PDGLog extends GraphLog<PDGGraph> {

    public PDGLog() {
        super();
@@ -28,9 +28,7 @@ public class PDGLog extends GraphLog<PDGGraph, PDGCFGVisitor> {
    public void visit(com.github.javaparser.ast.Node node) {
        this.graph = new PDGGraph();

        this.visitor = new PDGCFGVisitor(graph);

        node.accept(this.visitor, this.graph.getRootNode());
        node.accept(new PDGCFGVisitor(graph), this.graph.getRootNode());
    }

    @Override
@@ -60,8 +58,8 @@ public class PDGLog extends GraphLog<PDGGraph, PDGCFGVisitor> {
    public void generatePNGs(String pngName) throws IOException {
        this.pngName = pngName;

        if (visitor != null) {
            Graphviz.fromString(this.visitor.getCfgGraph().toGraphvizRepresentation())
        if (graph.getCfgGraph() != null) {
            Graphviz.fromString(this.graph.getCfgGraph().toGraphvizRepresentation())
                    .render(Format.PNG)
                    .toFile(new File("./out/" + pngName + "-cfg.png"));
        }
@@ -73,7 +71,7 @@ public class PDGLog extends GraphLog<PDGGraph, PDGCFGVisitor> {

    @Override
    public void openVisualRepresentation() throws IOException {
        if (visitor != null) {
        if (this.graph.getCfgGraph() != null) {
            new ProcessBuilder(Arrays.asList("xdg-open", "./out/" + pngName + "-cfg.png")).start();
        }

+3 −3
Original line number Diff line number Diff line
@@ -6,13 +6,13 @@ import tfm.visitors.SDGVisitor;

import java.io.IOException;

public class SDGLog extends GraphLog<SDGGraph, SDGVisitor> {
public class SDGLog extends GraphLog<SDGGraph> {

    @Override
    public void visit(Node node) {
        SDGGraph sdgGraph = new SDGGraph();
        this.graph = new SDGGraph();

        SDGVisitor sdgVisitor = new SDGVisitor(sdgGraph);
        SDGVisitor sdgVisitor = new SDGVisitor(this.graph);

        node.accept(sdgVisitor, null);
    }
Loading