Loading src/main/java/tfm/graphs/CFGGraph.java +5 −3 Original line number Diff line number Diff line package tfm.graphs; import com.github.javaparser.ast.stmt.EmptyStmt; import com.github.javaparser.ast.stmt.Statement; import edg.graphlib.Arrow; import tfm.arcs.Arc; import tfm.arcs.cfg.ControlFlowArc; Loading @@ -13,12 +15,12 @@ public abstract class CFGGraph extends Graph<CFGNode> { public CFGGraph() { super(); setRootVertex(new CFGNode(NodeId.getVertexId(), getRootNodeData(), 0)); setRootVertex(new CFGNode(NodeId.getVertexId(), getRootNodeData(), new EmptyStmt())); } @Override public CFGNode addNode(String instruction, int fileNumber) { CFGNode vertex = new CFGNode(NodeId.getVertexId(), instruction, fileNumber); public CFGNode addNode(String instruction, Statement statement) { CFGNode vertex = new CFGNode(NodeId.getVertexId(), instruction, statement); this.addVertex(vertex); return vertex; Loading src/main/java/tfm/graphs/Graph.java +2 −1 Original line number Diff line number Diff line package tfm.graphs; import com.github.javaparser.ast.stmt.Statement; import tfm.arcs.Arc; import tfm.arcs.data.ArcData; import tfm.nodes.Node; Loading Loading @@ -44,7 +45,7 @@ public abstract class Graph<NodeType extends Node> extends edg.graphlib.Graph<St return (NodeType) super.getRootVertex(); } public abstract NodeType addNode(String instruction, int fileNumber); public abstract NodeType addNode(String instruction, Statement statement); public String toString() { return getVerticies().stream() Loading src/main/java/tfm/graphs/PDGGraph.java +6 −27 Original line number Diff line number Diff line package tfm.graphs; import com.github.javaparser.ast.stmt.EmptyStmt; import com.github.javaparser.ast.stmt.Statement; import edg.graphlib.Vertex; import edg.graphlib.Visitor; import tfm.arcs.Arc; Loading @@ -13,24 +15,21 @@ import tfm.variables.actions.VariableDeclaration; import tfm.variables.actions.VariableUse; import tfm.variables.actions.VariableDefinition; import javax.swing.plaf.nimbus.State; import java.util.*; import java.util.stream.Collectors; public abstract class PDGGraph extends Graph<PDGNode> { private VariableSet variableSet; public PDGGraph() { setRootVertex(new PDGNode(NodeId.getVertexId(), getRootNodeData(), 0)); variableSet = new VariableSet(); setRootVertex(new PDGNode(NodeId.getVertexId(), getRootNodeData(), new EmptyStmt())); } protected abstract String getRootNodeData(); @Override public PDGNode addNode(String instruction, int fileNumber) { PDGNode vertex = new PDGNode(NodeId.getVertexId(), instruction, fileNumber); public PDGNode addNode(String instruction, Statement statement) { PDGNode vertex = new PDGNode(NodeId.getVertexId(), instruction, statement); super.addVertex(vertex); return vertex; Loading @@ -53,26 +52,6 @@ public abstract class PDGGraph extends Graph<PDGNode> { this.addArc(dataDataDependencyArc); } public boolean containsVariable(String name) { return variableSet.containsVariable(name); } public Variable addNewVariable(String name, Node declarationNode) { return variableSet.addVariable(name, new VariableDeclaration(declarationNode)); } public void addVariableDefinition(String variable, Node currentNode) { variableSet.addDefinition(variable, new VariableDefinition(currentNode)); } public void addVariableUse(String variable, Node currentNode) { variableSet.addUse(variable, new VariableUse(currentNode)); } public VariableSet getVariableSet() { return variableSet; } @Override public String toGraphvizRepresentation() { String lineSep = System.lineSeparator(); Loading src/main/java/tfm/nodes/CFGNode.java +4 −2 Original line number Diff line number Diff line package tfm.nodes; import com.github.javaparser.ast.stmt.Statement; import tfm.graphs.Graph; public class CFGNode extends Node { public CFGNode(Graph.NodeId id, String data, int fileNumber) { super(id, data, fileNumber); public CFGNode(Graph.NodeId id, String data, Statement statement) { super(id, data, statement); } } src/main/java/tfm/nodes/Node.java +10 −9 Original line number Diff line number Diff line package tfm.nodes; import com.github.javaparser.ast.stmt.Statement; import edg.graphlib.Vertex; import tfm.arcs.data.ArcData; import tfm.graphs.Graph; Loading @@ -10,16 +11,16 @@ import java.util.stream.Collectors; public class Node extends Vertex<String, ArcData> { private int fileLineNumber; private Statement statement; // public Node(Graph.NodeId id, String instruction) { // this(id, instruction, null); // } public Node(Graph.NodeId id, String instruction, Integer fileLineNumber) { super(id.toString(), instruction); public Node(Graph.NodeId id, String representation, Statement statement) { super(id.toString(), representation); this.fileLineNumber = fileLineNumber; this.statement = statement; } public int getId() { Loading @@ -34,12 +35,12 @@ public class Node extends Vertex<String, ArcData> { getOutgoingArrows().stream().map(arc -> arc.getTo().getName()).collect(Collectors.toList())); } public int getFileLineNumber() { return fileLineNumber; public Statement getStatement() { return statement; } public void setFileLineNumber(Integer fileLineNumber) { this.fileLineNumber = fileLineNumber; public Optional<Integer> getFileLineNumber() { return statement.getBegin().isPresent() ? Optional.of(statement.getBegin().get().line) : Optional.empty(); } @Override Loading @@ -55,7 +56,7 @@ public class Node extends Vertex<String, ArcData> { return Objects.equals(getData(), other.getData()) && Objects.equals(getIncomingArrows(), other.getIncomingArrows()) && Objects.equals(getOutgoingArrows(), other.getOutgoingArrows()) && Objects.equals(fileLineNumber, other.fileLineNumber); && Objects.equals(statement, other.statement); // && Objects.equals(getName(), other.getName()) ID IS ALWAYS UNIQUE, SO IT WILL NEVER BE THE SAME } Loading Loading
src/main/java/tfm/graphs/CFGGraph.java +5 −3 Original line number Diff line number Diff line package tfm.graphs; import com.github.javaparser.ast.stmt.EmptyStmt; import com.github.javaparser.ast.stmt.Statement; import edg.graphlib.Arrow; import tfm.arcs.Arc; import tfm.arcs.cfg.ControlFlowArc; Loading @@ -13,12 +15,12 @@ public abstract class CFGGraph extends Graph<CFGNode> { public CFGGraph() { super(); setRootVertex(new CFGNode(NodeId.getVertexId(), getRootNodeData(), 0)); setRootVertex(new CFGNode(NodeId.getVertexId(), getRootNodeData(), new EmptyStmt())); } @Override public CFGNode addNode(String instruction, int fileNumber) { CFGNode vertex = new CFGNode(NodeId.getVertexId(), instruction, fileNumber); public CFGNode addNode(String instruction, Statement statement) { CFGNode vertex = new CFGNode(NodeId.getVertexId(), instruction, statement); this.addVertex(vertex); return vertex; Loading
src/main/java/tfm/graphs/Graph.java +2 −1 Original line number Diff line number Diff line package tfm.graphs; import com.github.javaparser.ast.stmt.Statement; import tfm.arcs.Arc; import tfm.arcs.data.ArcData; import tfm.nodes.Node; Loading Loading @@ -44,7 +45,7 @@ public abstract class Graph<NodeType extends Node> extends edg.graphlib.Graph<St return (NodeType) super.getRootVertex(); } public abstract NodeType addNode(String instruction, int fileNumber); public abstract NodeType addNode(String instruction, Statement statement); public String toString() { return getVerticies().stream() Loading
src/main/java/tfm/graphs/PDGGraph.java +6 −27 Original line number Diff line number Diff line package tfm.graphs; import com.github.javaparser.ast.stmt.EmptyStmt; import com.github.javaparser.ast.stmt.Statement; import edg.graphlib.Vertex; import edg.graphlib.Visitor; import tfm.arcs.Arc; Loading @@ -13,24 +15,21 @@ import tfm.variables.actions.VariableDeclaration; import tfm.variables.actions.VariableUse; import tfm.variables.actions.VariableDefinition; import javax.swing.plaf.nimbus.State; import java.util.*; import java.util.stream.Collectors; public abstract class PDGGraph extends Graph<PDGNode> { private VariableSet variableSet; public PDGGraph() { setRootVertex(new PDGNode(NodeId.getVertexId(), getRootNodeData(), 0)); variableSet = new VariableSet(); setRootVertex(new PDGNode(NodeId.getVertexId(), getRootNodeData(), new EmptyStmt())); } protected abstract String getRootNodeData(); @Override public PDGNode addNode(String instruction, int fileNumber) { PDGNode vertex = new PDGNode(NodeId.getVertexId(), instruction, fileNumber); public PDGNode addNode(String instruction, Statement statement) { PDGNode vertex = new PDGNode(NodeId.getVertexId(), instruction, statement); super.addVertex(vertex); return vertex; Loading @@ -53,26 +52,6 @@ public abstract class PDGGraph extends Graph<PDGNode> { this.addArc(dataDataDependencyArc); } public boolean containsVariable(String name) { return variableSet.containsVariable(name); } public Variable addNewVariable(String name, Node declarationNode) { return variableSet.addVariable(name, new VariableDeclaration(declarationNode)); } public void addVariableDefinition(String variable, Node currentNode) { variableSet.addDefinition(variable, new VariableDefinition(currentNode)); } public void addVariableUse(String variable, Node currentNode) { variableSet.addUse(variable, new VariableUse(currentNode)); } public VariableSet getVariableSet() { return variableSet; } @Override public String toGraphvizRepresentation() { String lineSep = System.lineSeparator(); Loading
src/main/java/tfm/nodes/CFGNode.java +4 −2 Original line number Diff line number Diff line package tfm.nodes; import com.github.javaparser.ast.stmt.Statement; import tfm.graphs.Graph; public class CFGNode extends Node { public CFGNode(Graph.NodeId id, String data, int fileNumber) { super(id, data, fileNumber); public CFGNode(Graph.NodeId id, String data, Statement statement) { super(id, data, statement); } }
src/main/java/tfm/nodes/Node.java +10 −9 Original line number Diff line number Diff line package tfm.nodes; import com.github.javaparser.ast.stmt.Statement; import edg.graphlib.Vertex; import tfm.arcs.data.ArcData; import tfm.graphs.Graph; Loading @@ -10,16 +11,16 @@ import java.util.stream.Collectors; public class Node extends Vertex<String, ArcData> { private int fileLineNumber; private Statement statement; // public Node(Graph.NodeId id, String instruction) { // this(id, instruction, null); // } public Node(Graph.NodeId id, String instruction, Integer fileLineNumber) { super(id.toString(), instruction); public Node(Graph.NodeId id, String representation, Statement statement) { super(id.toString(), representation); this.fileLineNumber = fileLineNumber; this.statement = statement; } public int getId() { Loading @@ -34,12 +35,12 @@ public class Node extends Vertex<String, ArcData> { getOutgoingArrows().stream().map(arc -> arc.getTo().getName()).collect(Collectors.toList())); } public int getFileLineNumber() { return fileLineNumber; public Statement getStatement() { return statement; } public void setFileLineNumber(Integer fileLineNumber) { this.fileLineNumber = fileLineNumber; public Optional<Integer> getFileLineNumber() { return statement.getBegin().isPresent() ? Optional.of(statement.getBegin().get().line) : Optional.empty(); } @Override Loading @@ -55,7 +56,7 @@ public class Node extends Vertex<String, ArcData> { return Objects.equals(getData(), other.getData()) && Objects.equals(getIncomingArrows(), other.getIncomingArrows()) && Objects.equals(getOutgoingArrows(), other.getOutgoingArrows()) && Objects.equals(fileLineNumber, other.fileLineNumber); && Objects.equals(statement, other.statement); // && Objects.equals(getName(), other.getName()) ID IS ALWAYS UNIQUE, SO IT WILL NEVER BE THE SAME } Loading