Initial commit
This commit is contained in:
commit
a52d26a18e
24 changed files with 1091 additions and 0 deletions
79
src/main/java/grafos/Transformador.java
Normal file
79
src/main/java/grafos/Transformador.java
Normal file
|
@ -0,0 +1,79 @@
|
|||
package grafos;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.github.javaparser.JavaParser;
|
||||
import com.github.javaparser.ast.CompilationUnit;
|
||||
import com.github.javaparser.ast.Node;
|
||||
import com.github.javaparser.ast.comments.Comment;
|
||||
import com.github.javaparser.ast.visitor.VoidVisitor;
|
||||
|
||||
public class Transformador {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Ruta del fichero con el programa que vamos a transformar
|
||||
String ruta = "./src/test/res/ejemplos/Test_1";
|
||||
|
||||
// Abrimos el fichero original (un ".java")
|
||||
File original = new File(ruta + ".java");
|
||||
|
||||
// Parseamos el fichero original. Se crea una unidad de compilación (un AST).
|
||||
CompilationUnit cu = JavaParser.parse(original);
|
||||
|
||||
quitarComentarios(cu);
|
||||
|
||||
// Recorremos el AST
|
||||
List<String> arcos = new ArrayList<String>();
|
||||
VoidVisitor<List<String>> visitador = new Visitador();
|
||||
visitador.visit(cu,arcos);
|
||||
|
||||
// Imprimimos el CFG del programa
|
||||
String dotInfo = imprimirGrafo(arcos);
|
||||
|
||||
// Generamos un PDF con el CFG del programa
|
||||
System.out.print("\nGenerando PDF...");
|
||||
GraphViz gv=new GraphViz();
|
||||
gv.addln(gv.start_graph());
|
||||
gv.add(dotInfo);
|
||||
gv.addln(gv.end_graph());
|
||||
String type = "pdf"; // String type = "gif";
|
||||
// gv.increaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
gv.decreaseDpi();
|
||||
File destino_CFG = new File(ruta + "_CFG."+ type);
|
||||
gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), destino_CFG);
|
||||
System.out.println(" PDF generado!");
|
||||
}
|
||||
|
||||
// Imprime el grafo en la pantalla
|
||||
private static String imprimirGrafo(List<String> arcos)
|
||||
{
|
||||
String dotInfo="";
|
||||
for(String arco:arcos) {
|
||||
dotInfo += arco;
|
||||
System.out.println("ARCO: "+arco);
|
||||
}
|
||||
System.out.println("\nCFG:");
|
||||
System.out.println(dotInfo);
|
||||
|
||||
return dotInfo;
|
||||
}
|
||||
|
||||
// Elimina todos los comentarios de un nodo y sus hijos
|
||||
static void quitarComentarios(Node node){
|
||||
node.removeComment();
|
||||
for (Comment comment : node.getOrphanComments())
|
||||
{
|
||||
node.removeOrphanComment(comment);
|
||||
}
|
||||
// Do something with the node
|
||||
for (Node child : node.getChildNodes()){
|
||||
quitarComentarios(child);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue