From 0e5667582b5a826a58bcf931d8bc19f2e9452484 Mon Sep 17 00:00:00 2001 From: Carlos Galindo Date: Tue, 26 Mar 2019 20:29:29 +0100 Subject: [PATCH] Set indent to tabs and applied format to project --- .idea/codeStyles/Project.xml | 14 + .idea/codeStyles/codeStyleConfig.xml | 5 + pom.xml | 76 +-- src/main/java/grafos/GraphViz.java | 630 ++++++++++++------------ src/main/java/grafos/Transformador.java | 74 ++- src/main/java/grafos/Visitador.java | 72 ++- src/test/res/ejemplos/Bucles_1.java | 10 +- src/test/res/ejemplos/Bucles_2.java | 21 +- src/test/res/ejemplos/Bucles_3.java | 30 +- src/test/res/ejemplos/Bucles_4.java | 20 +- src/test/res/ejemplos/Bucles_5.java | 47 +- src/test/res/ejemplos/Bucles_6.java | 24 +- src/test/res/ejemplos/Test_1.java | 11 +- src/test/res/ejemplos/Test_2.java | 9 +- src/test/res/ejemplos/Test_3.java | 15 +- src/test/res/ejemplos/Test_4.java | 23 +- src/test/res/ejemplos/Test_5.java | 25 +- src/test/res/ejemplos/Test_6.java | 24 +- src/test/res/ejemplos/Test_7.java | 27 +- src/test/res/ejemplos/Test_8.java | 25 +- src/test/res/ejemplos/Test_9.java | 38 +- 21 files changed, 586 insertions(+), 634 deletions(-) create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..13ef7c4 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 00df87c..aa07067 100644 --- a/pom.xml +++ b/pom.xml @@ -1,44 +1,44 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - com.upv.ltd.graphs - graphs - 0.0.1-SNAPSHOT - jar + com.upv.ltd.graphs + graphs + 0.0.1-SNAPSHOT + jar - graphs - http://maven.apache.org + graphs + http://maven.apache.org - - UTF-8 - + + UTF-8 + - - - junit - junit - 3.8.1 - test - - - com.google.code.gson - gson - 2.3.1 - - - com.github.javaparser - javaparser-symbol-solver-core - 3.5.17 - - - - - - Josep Silva - jsilva@dsic.upv.es - http://www.dsic.upv.es/~jsilva - jsilva - - + + + junit + junit + 3.8.1 + test + + + com.google.code.gson + gson + 2.3.1 + + + com.github.javaparser + javaparser-symbol-solver-core + 3.5.17 + + + + + + Josep Silva + jsilva@dsic.upv.es + http://www.dsic.upv.es/~jsilva + jsilva + + diff --git a/src/main/java/grafos/GraphViz.java b/src/main/java/grafos/GraphViz.java index e9c1cf5..07fc3d3 100644 --- a/src/main/java/grafos/GraphViz.java +++ b/src/main/java/grafos/GraphViz.java @@ -4,363 +4,353 @@ package grafos; /*$Id$*/ /* -****************************************************************************** -* * -* (c) Copyright Laszlo Szathmary * -* * -* This program is free software; you can redistribute it and/or modify it * -* under the terms of the GNU Lesser General Public License as published by * -* the Free Software Foundation; either version 2.1 of the License, or * -* (at your option) any later version. * -* * -* This program is distributed in the hope that it will be useful, but * -* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * -* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * -* License for more details. * -* * -* You should have received a copy of the GNU Lesser General Public License * -* along with this program; if not, write to the Free Software Foundation, * -* Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * -* * -****************************************************************************** -*/ + ****************************************************************************** + * * + * (c) Copyright Laszlo Szathmary * + * * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as published by * + * the Free Software Foundation; either version 2.1 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * + * License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public License * + * along with this program; if not, write to the Free Software Foundation, * + * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * + * * + ****************************************************************************** + */ -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.InputStreamReader; +import java.io.*; import java.util.Properties; /** -*
-*
Purpose: GraphViz Java API -*
-* -*
Description: -*
With this Java class you can simply call dot -* from your Java programs. -*
Example usage: -*
-*
-*    GraphViz gv = new GraphViz();
-*    gv.addln(gv.start_graph());
-*    gv.addln("A -> B;");
-*    gv.addln("A -> C;");
-*    gv.addln(gv.end_graph());
-*    System.out.println(gv.getDotSource());
-*
-*    String type = "gif";
-*    File out = new File("out." + type);   // out.gif in this example
-*    gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), out );
-* 
-*
-* -*
-* -* @version v0.5.1, 2013/03/18 (March) -- Patch of Juan Hoyos (Mac support) -* @version v0.5, 2012/04/24 (April) -- Patch of Abdur Rahman (OS detection + start subgraph + -* read config file) -* @version v0.4, 2011/02/05 (February) -- Patch of Keheliya Gallaba is added. Now you -* can specify the type of the output file: gif, dot, fig, pdf, ps, svg, png, etc. -* @version v0.3, 2010/11/29 (November) -- Windows support + ability to read the graph from a text file -* @version v0.2, 2010/07/22 (July) -- bug fix -* @version v0.1, 2003/12/04 (December) -- first release -* @author Laszlo Szathmary (jabba.laci@gmail.com) -*/ -public class GraphViz -{ - /** - * Detects the client's operating system. - */ - private final static String osName = System.getProperty("os.name").replaceAll("\\s",""); + *
+ *
Purpose: GraphViz Java API + *
+ * + *
Description: + *
With this Java class you can simply call dot + * from your Java programs. + *
Example usage: + *
+ *
+ *    GraphViz gv = new GraphViz();
+ *    gv.addln(gv.start_graph());
+ *    gv.addln("A -> B;");
+ *    gv.addln("A -> C;");
+ *    gv.addln(gv.end_graph());
+ *    System.out.println(gv.getDotSource());
+ *
+ *    String type = "gif";
+ *    File out = new File("out." + type);   // out.gif in this example
+ *    gv.writeGraphToFile( gv.getGraph( gv.getDotSource(), type ), out );
+ * 
+ *
+ * + *
+ * + * @author Laszlo Szathmary (jabba.laci@gmail.com) + * @version v0.1, 2003/12/04 (December) -- first release + */ +public class GraphViz { + /** + * Detects the client's operating system. + */ + private final static String osName = System.getProperty("os.name").replaceAll("\\s", ""); - /** - * Load the config.properties file. - */ - private final static String cfgProp = "./src/main/res/config.properties"; - private final static Properties configFile = new Properties() { - private final static long serialVersionUID = 1L; { - try { - load(new FileInputStream(cfgProp)); - } catch (Exception ignored) {} - } - }; + /** + * Load the config.properties file. + */ + private final static String cfgProp = "./src/main/res/config.properties"; + private final static Properties configFile = new Properties() { + private final static long serialVersionUID = 1L; - /** - * The dir. where temporary files will be created. - */ -private static String TEMP_DIR = "/tmp/"; + { + try { + load(new FileInputStream(cfgProp)); + } catch (Exception ignored) { + } + } + }; - /** - * Where is your dot program located? It will be called externally. - */ -private static String DOT = configFile.getProperty("dotFor" + osName); + /** + * The dir. where temporary files will be created. + */ + private static String TEMP_DIR = "/tmp/"; - /** - * The image size in dpi. 96 dpi is normal size. Higher values are 10% higher each. - * Lower values 10% lower each. - * - * dpi patch by Peter Mueller - */ - private int[] dpiSizes = {46, 51, 57, 63, 70, 78, 86, 96, 106, 116, 128, 141, 155, 170, 187, 206, 226, 249}; + /** + * Where is your dot program located? It will be called externally. + */ + private static String DOT = configFile.getProperty("dotFor" + osName); - /** - * Define the index in the image size array. - */ - private int currentDpiPos = 7; + /** + * The image size in dpi. 96 dpi is normal size. Higher values are 10% higher each. + * Lower values 10% lower each. + *

+ * dpi patch by Peter Mueller + */ + private int[] dpiSizes = {46, 51, 57, 63, 70, 78, 86, 96, 106, 116, 128, 141, 155, 170, 187, 206, 226, 249}; - /** - * Increase the image size (dpi). - */ - public void increaseDpi() { - if ( this.currentDpiPos < (this.dpiSizes.length - 1) ) { - ++this.currentDpiPos; - } - } + /** + * Define the index in the image size array. + */ + private int currentDpiPos = 7; - /** - * Decrease the image size (dpi). - */ - public void decreaseDpi() { - if (this.currentDpiPos > 0) { - --this.currentDpiPos; - } - } + /** + * Increase the image size (dpi). + */ + public void increaseDpi() { + if (this.currentDpiPos < (this.dpiSizes.length - 1)) { + ++this.currentDpiPos; + } + } - public int getImageDpi() { - return this.dpiSizes[this.currentDpiPos]; - } + /** + * Decrease the image size (dpi). + */ + public void decreaseDpi() { + if (this.currentDpiPos > 0) { + --this.currentDpiPos; + } + } - /** - * The source of the graph written in dot language. - */ - private StringBuilder graph = new StringBuilder(); + public int getImageDpi() { + return this.dpiSizes[this.currentDpiPos]; + } - /** - * Constructor: creates a new GraphViz object that will contain - * a graph. - */ - public GraphViz() { - } + /** + * The source of the graph written in dot language. + */ + private StringBuilder graph = new StringBuilder(); - /** - * Returns the graph's source description in dot language. - * @return Source of the graph in dot language. - */ - public String getDotSource() { - return this.graph.toString(); - } + /** + * Constructor: creates a new GraphViz object that will contain + * a graph. + */ + public GraphViz() { + } - /** - * Adds a string to the graph's source (without newline). - */ - public void add(String line) { - this.graph.append(line); - } + /** + * Returns the graph's source description in dot language. + * + * @return Source of the graph in dot language. + */ + public String getDotSource() { + return this.graph.toString(); + } - /** - * Adds a string to the graph's source (with newline). - */ - public void addln(String line) { - this.graph.append(line).append("\n"); - } + /** + * Adds a string to the graph's source (without newline). + */ + public void add(String line) { + this.graph.append(line); + } - /** - * Adds a newline to the graph's source. - */ - public void addln() { - this.graph.append('\n'); - } + /** + * Adds a string to the graph's source (with newline). + */ + public void addln(String line) { + this.graph.append(line).append("\n"); + } - public void clearGraph(){ - this.graph = new StringBuilder(); - } + /** + * Adds a newline to the graph's source. + */ + public void addln() { + this.graph.append('\n'); + } - /** - * Returns the graph as an image in binary format. - * @param dot_source Source of the graph to be drawn. - * @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png. - * @return A byte array containing the image of the graph. - */ - public byte[] getGraph(String dot_source, String type) - { - File dot; - byte[] img_stream; + public void clearGraph() { + this.graph = new StringBuilder(); + } - try { - dot = writeDotSourceToFile(dot_source); - if (dot != null) - { - img_stream = get_img_stream(dot, type); - if (!dot.delete()) - System.err.println("Warning: " + dot.getAbsolutePath() + " could not be deleted!"); - return img_stream; - } - return null; - } catch (java.io.IOException ioe) { return null; } - } + /** + * Returns the graph as an image in binary format. + * + * @param dot_source Source of the graph to be drawn. + * @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png. + * @return A byte array containing the image of the graph. + */ + public byte[] getGraph(String dot_source, String type) { + File dot; + byte[] img_stream; - /** - * Writes the graph's image in a file. - * @param img A byte array containing the image of the graph. - * @param file Name of the file to where we want to write. - * @return Success: 1, Failure: -1 - */ - public int writeGraphToFile(byte[] img, String file) - { - File to = new File(file); - return writeGraphToFile(img, to); - } + try { + dot = writeDotSourceToFile(dot_source); + if (dot != null) { + img_stream = get_img_stream(dot, type); + if (!dot.delete()) + System.err.println("Warning: " + dot.getAbsolutePath() + " could not be deleted!"); + return img_stream; + } + return null; + } catch (java.io.IOException ioe) { + return null; + } + } - /** - * Writes the graph's image in a file. - * @param img A byte array containing the image of the graph. - * @param to A File object to where we want to write. - * @return Success: 1, Failure: -1 - */ - public int writeGraphToFile(byte[] img, File to) - { - try { - FileOutputStream fos = new FileOutputStream(to); - fos.write(img); - fos.close(); - } catch (java.io.IOException ioe) { return -1; } - return 1; - } + /** + * Writes the graph's image in a file. + * + * @param img A byte array containing the image of the graph. + * @param file Name of the file to where we want to write. + * @return Success: 1, Failure: -1 + */ + public int writeGraphToFile(byte[] img, String file) { + File to = new File(file); + return writeGraphToFile(img, to); + } - /** - * It will call the external dot program, and return the image in - * binary format. - * @param dot Source of the graph (in dot language). - * @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png. - * @return The image of the graph in .gif format. - */ - private byte[] get_img_stream(File dot, String type) - { - File img; - byte[] img_stream = null; + /** + * Writes the graph's image in a file. + * + * @param img A byte array containing the image of the graph. + * @param to A File object to where we want to write. + * @return Success: 1, Failure: -1 + */ + public int writeGraphToFile(byte[] img, File to) { + try { + FileOutputStream fos = new FileOutputStream(to); + fos.write(img); + fos.close(); + } catch (java.io.IOException ioe) { + return -1; + } + return 1; + } - try { - img = File.createTempFile("graph_", "."+type, new File(GraphViz.TEMP_DIR)); - Runtime rt = Runtime.getRuntime(); + /** + * It will call the external dot program, and return the image in + * binary format. + * + * @param dot Source of the graph (in dot language). + * @param type Type of the output image to be produced, e.g.: gif, dot, fig, pdf, ps, svg, png. + * @return The image of the graph in .gif format. + */ + private byte[] get_img_stream(File dot, String type) { + File img; + byte[] img_stream = null; - // patch by Mike Chenault - String[] args = {DOT, "-T"+type, "-Gdpi="+dpiSizes[this.currentDpiPos], dot.getAbsolutePath(), "-o", img.getAbsolutePath()}; - Process p = rt.exec(args); + try { + img = File.createTempFile("graph_", "." + type, new File(GraphViz.TEMP_DIR)); + Runtime rt = Runtime.getRuntime(); - p.waitFor(); + // patch by Mike Chenault + String[] args = {DOT, "-T" + type, "-Gdpi=" + dpiSizes[this.currentDpiPos], dot.getAbsolutePath(), "-o", img.getAbsolutePath()}; + Process p = rt.exec(args); - FileInputStream in = new FileInputStream(img.getAbsolutePath()); - img_stream = new byte[in.available()]; - in.read(img_stream); - // Close it if we need to - in.close(); + p.waitFor(); - if (!img.delete()) - System.err.println("Warning: " + img.getAbsolutePath() + " could not be deleted!"); - } - catch (java.io.IOException ioe) { - System.err.println("Error: in I/O processing of tempfile in dir " + GraphViz.TEMP_DIR+"\n"); - System.err.println(" or in calling external command"); - ioe.printStackTrace(); - } - catch (java.lang.InterruptedException ie) { - System.err.println("Error: the execution of the external program was interrupted"); - ie.printStackTrace(); - } + FileInputStream in = new FileInputStream(img.getAbsolutePath()); + img_stream = new byte[in.available()]; + in.read(img_stream); + // Close it if we need to + in.close(); - return img_stream; - } + if (!img.delete()) + System.err.println("Warning: " + img.getAbsolutePath() + " could not be deleted!"); + } catch (java.io.IOException ioe) { + System.err.println("Error: in I/O processing of tempfile in dir " + GraphViz.TEMP_DIR + "\n"); + System.err.println(" or in calling external command"); + ioe.printStackTrace(); + } catch (java.lang.InterruptedException ie) { + System.err.println("Error: the execution of the external program was interrupted"); + ie.printStackTrace(); + } - /** - * Writes the source of the graph in a file, and returns the written file - * as a File object. - * @param str Source of the graph (in dot language). - * @return The file (as a File object) that contains the source of the graph. - */ - private File writeDotSourceToFile(String str) throws java.io.IOException - { - File temp; - try { - temp = File.createTempFile("dorrr",".dot", new File(GraphViz.TEMP_DIR)); - FileWriter fout = new FileWriter(temp); - fout.write(str); - BufferedWriter br=new BufferedWriter(new FileWriter("/tmp/dotsource.dot")); - br.write(str); - br.flush(); - br.close(); - fout.close(); - } - catch (Exception e) { - System.err.println("Error: I/O error while writing the dot source to temp file!"); - return null; - } - return temp; - } + return img_stream; + } - /** - * Returns a string that is used to start a graph. - * @return A string to open a graph. - */ - public String start_graph() { - return "digraph G {"; - } + /** + * Writes the source of the graph in a file, and returns the written file + * as a File object. + * + * @param str Source of the graph (in dot language). + * @return The file (as a File object) that contains the source of the graph. + */ + private File writeDotSourceToFile(String str) throws java.io.IOException { + File temp; + try { + temp = File.createTempFile("dorrr", ".dot", new File(GraphViz.TEMP_DIR)); + FileWriter fout = new FileWriter(temp); + fout.write(str); + BufferedWriter br = new BufferedWriter(new FileWriter("/tmp/dotsource.dot")); + br.write(str); + br.flush(); + br.close(); + fout.close(); + } catch (Exception e) { + System.err.println("Error: I/O error while writing the dot source to temp file!"); + return null; + } + return temp; + } - /** - * Returns a string that is used to end a graph. - * @return A string to close a graph. - */ - public String end_graph() { - return "}"; - } + /** + * Returns a string that is used to start a graph. + * + * @return A string to open a graph. + */ + public String start_graph() { + return "digraph G {"; + } - /** - * Takes the cluster or subgraph id as input parameter and returns a string - * that is used to start a subgraph. - * @return A string to open a subgraph. - */ - public String start_subgraph(int clusterid) { - return "subgraph cluster_" + clusterid + " {"; - } + /** + * Returns a string that is used to end a graph. + * + * @return A string to close a graph. + */ + public String end_graph() { + return "}"; + } - /** - * Returns a string that is used to end a graph. - * @return A string to close a graph. - */ - public String end_subgraph() { - return "}"; - } + /** + * Takes the cluster or subgraph id as input parameter and returns a string + * that is used to start a subgraph. + * + * @return A string to open a subgraph. + */ + public String start_subgraph(int clusterid) { + return "subgraph cluster_" + clusterid + " {"; + } - /** - * Read a DOT graph from a text file. - * - * @param input Input text file containing the DOT graph - * source. - */ - public void readSource(String input) - { - StringBuilder sb = new StringBuilder(); + /** + * Returns a string that is used to end a graph. + * + * @return A string to close a graph. + */ + public String end_subgraph() { + return "}"; + } - try - { - FileInputStream fis = new FileInputStream(input); - DataInputStream dis = new DataInputStream(fis); - BufferedReader br = new BufferedReader(new InputStreamReader(dis)); - String line; - while ((line = br.readLine()) != null) { - sb.append(line); - } - dis.close(); - } - catch (Exception e) { - System.err.println("Error: " + e.getMessage()); - } + /** + * Read a DOT graph from a text file. + * + * @param input Input text file containing the DOT graph + * source. + */ + public void readSource(String input) { + StringBuilder sb = new StringBuilder(); - this.graph = sb; - } + try { + FileInputStream fis = new FileInputStream(input); + DataInputStream dis = new DataInputStream(fis); + BufferedReader br = new BufferedReader(new InputStreamReader(dis)); + String line; + while ((line = br.readLine()) != null) { + sb.append(line); + } + dis.close(); + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + } + + this.graph = sb; + } } // end of class GraphViz diff --git a/src/main/java/grafos/Transformador.java b/src/main/java/grafos/Transformador.java index 691bb3f..4f03edf 100644 --- a/src/main/java/grafos/Transformador.java +++ b/src/main/java/grafos/Transformador.java @@ -1,79 +1,77 @@ 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; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + 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 arcos = new ArrayList(); VoidVisitor> visitador = new Visitador(); - visitador.visit(cu,arcos); - + 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!"); + 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 arcos) - { - StringBuilder dotInfo= new StringBuilder(); - for(String arco:arcos) { + private static String imprimirGrafo(List arcos) { + StringBuilder dotInfo = new StringBuilder(); + for (String arco : arcos) { dotInfo.append(arco); - System.out.println("ARCO: "+arco); + System.out.println("ARCO: " + arco); } System.out.println("\nCFG:"); System.out.println(dotInfo); return dotInfo.toString(); } - + // Elimina todos los comentarios de un nodo y sus hijos - private static void quitarComentarios(Node node){ + private static void quitarComentarios(Node node) { node.removeComment(); - for (Comment comment : node.getOrphanComments()) - { + for (Comment comment : node.getOrphanComments()) { node.removeOrphanComment(comment); } - // Do something with the node - for (Node child : node.getChildNodes()){ - quitarComentarios(child); - } + // Do something with the node + for (Node child : node.getChildNodes()) { + quitarComentarios(child); + } } - + } diff --git a/src/main/java/grafos/Visitador.java b/src/main/java/grafos/Visitador.java index cf40d24..6ef9c77 100755 --- a/src/main/java/grafos/Visitador.java +++ b/src/main/java/grafos/Visitador.java @@ -1,6 +1,4 @@ package grafos; - -import java.util.List; import com.github.javaparser.ast.NodeList; import com.github.javaparser.ast.body.MethodDeclaration; @@ -9,83 +7,77 @@ import com.github.javaparser.ast.stmt.ExpressionStmt; import com.github.javaparser.ast.stmt.Statement; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; +import java.util.List; -public class Visitador extends VoidVisitorAdapter> -{ + +public class Visitador extends VoidVisitorAdapter> { //********************************************************/ //********************** Atributos ***********************/ //********************************************************/ - + // Usamos un contador para numerar las instrucciones - private int contador=1; + private int contador = 1; private String nodoAnterior = "Start"; private String nodoActual = ""; - + //********************************************************/ //*********************** Metodos ************************/ //********************************************************/ - // Visitador de métodos + // Visitador de métodos // Este visitador añade el nodo final al CFG - @Override - public void visit(MethodDeclaration methodDeclaration, Listcollector) - { - // Visitamos el método + @Override + public void visit(MethodDeclaration methodDeclaration, List collector) { + // Visitamos el método super.visit(methodDeclaration, collector); - + // Añadimos el nodo final al CFG - collector.add(nodoAnterior+"-> Stop;"); + collector.add(nodoAnterior + "-> Stop;"); } - + // Visitador de expresiones // Cada expresión encontrada genera un nodo en el CFG @Override - public void visit(ExpressionStmt es, Listcollector) - { + public void visit(ExpressionStmt es, List collector) { // Creamos el nodo actual - nodoActual = crearNodo(es); - + nodoActual = crearNodo(es); + crearArcos(collector); - + nodoAnterior = nodoActual; - + // Seguimos visitando... super.visit(es, collector); } - + // Añade un arco desde el último nodo hasta el nodo actual (se le pasa como parametro) - private void añadirArcoSecuencialCFG(Listcollector) - { + private void añadirArcoSecuencialCFG(List collector) { System.out.println("NODO: " + nodoActual); - + String arco = nodoAnterior + "->" + nodoActual + ";"; collector.add(arco); } - + // Crear arcos - private void crearArcos(Listcollector) - { - añadirArcoSecuencialCFG(collector); + private void crearArcos(List collector) { + añadirArcoSecuencialCFG(collector); } // Crear nodo // Añade un arco desde el nodo actual hasta el último control - private String crearNodo(Object objeto) - { - return "\"("+ contador++ +") "+quitarComillas(objeto.toString())+"\""; + private String crearNodo(Object objeto) { + return "\"(" + contador++ + ") " + quitarComillas(objeto.toString()) + "\""; } - + // Sustituye " por \" en un string: Sirve para eliminar comillas. - private static String quitarComillas(String texto) - { - return texto.replace("\"", "\\\""); + private static String quitarComillas(String texto) { + return texto.replace("\"", "\\\""); } - + // Dada una sentencia, // Si es una �nica instrucci�n, devuelve un bloque equivalente // Si es un bloque, lo devuelve - private BlockStmt convertirEnBloque(Statement statement) - { + private BlockStmt convertirEnBloque(Statement statement) { if (statement instanceof BlockStmt) return (BlockStmt) statement; @@ -97,5 +89,5 @@ public class Visitador extends VoidVisitorAdapter> return block; } - + } diff --git a/src/test/res/ejemplos/Bucles_1.java b/src/test/res/ejemplos/Bucles_1.java index f3f00eb..664ab83 100755 --- a/src/test/res/ejemplos/Bucles_1.java +++ b/src/test/res/ejemplos/Bucles_1.java @@ -2,15 +2,13 @@ package ejemplos; public class Bucles_1 { - public static void main(String[] args) - { + public static void main(String[] args) { // BUCLE WHILE (sin anidamiento) - int x=1; - while (x<=10) - { + int x = 1; + while (x <= 10) { System.out.print(x); x++; } - System.out.println(); + System.out.println(); } } diff --git a/src/test/res/ejemplos/Bucles_2.java b/src/test/res/ejemplos/Bucles_2.java index 60d4e51..3d388e2 100755 --- a/src/test/res/ejemplos/Bucles_2.java +++ b/src/test/res/ejemplos/Bucles_2.java @@ -2,19 +2,16 @@ package ejemplos; public class Bucles_2 { - public static void main(String[] args) - { + public static void main(String[] args) { // BUCLE WHILE anidado a otro WHILE - System.out.println("Empieza bucle WHILE anidado a otro WHILE:"); - int x=1; - char y='a'; - while (x<=10) - { - System.out.print(" "+x); - y='a'; - while (y<='c') - { - System.out.print(" "+y); + System.out.println("Empieza bucle WHILE anidado a otro WHILE:"); + int x = 1; + char y = 'a'; + while (x <= 10) { + System.out.print(" " + x); + y = 'a'; + while (y <= 'c') { + System.out.print(" " + y); y++; } x++; diff --git a/src/test/res/ejemplos/Bucles_3.java b/src/test/res/ejemplos/Bucles_3.java index fedefc7..96e4d86 100755 --- a/src/test/res/ejemplos/Bucles_3.java +++ b/src/test/res/ejemplos/Bucles_3.java @@ -4,34 +4,32 @@ public class Bucles_3 { public static void main(String[] args) { int x; - + // BUCLE FOR (sin anidamiento) - System.out.println("Empieza bucle FOR:"); - for (x=1;x<=10;x++) - { - System.out.print(" "+x); + System.out.println("Empieza bucle FOR:"); + for (x = 1; x <= 10; x++) { + System.out.print(" " + x); } System.out.println(); // BUCLE WHILE (sin anidamiento) - System.out.println("Empieza bucle WHILE:"); - x=1; - while (x<=10) - { - System.out.print(" "+x); + System.out.println("Empieza bucle WHILE:"); + x = 1; + while (x <= 10) { + System.out.print(" " + x); x++; } System.out.println(); // BUCLE DO WHILE (sin anidamiento) - System.out.println("Empieza bucle DO WHILE:"); - x=1; - do{ - System.out.print(" "+x); + System.out.println("Empieza bucle DO WHILE:"); + x = 1; + do { + System.out.print(" " + x); x++; } - while (x<=10); + while (x <= 10); System.out.println(); - + } } diff --git a/src/test/res/ejemplos/Bucles_4.java b/src/test/res/ejemplos/Bucles_4.java index 0d844b3..9f3c130 100755 --- a/src/test/res/ejemplos/Bucles_4.java +++ b/src/test/res/ejemplos/Bucles_4.java @@ -2,22 +2,19 @@ package ejemplos; public class Bucles_4 { - public static void main(String[] args) - { - int x=1; - + public static void main(String[] args) { + int x = 1; + //Bucle 1: Contador - while (x<10) - { + while (x < 10) { System.out.println(x); x++; } //Bucle 2: Sumatorio - int suma=0; - int y=1; - while (y<10) - { + int suma = 0; + int y = 1; + while (y < 10) { suma += y; y++; } @@ -27,8 +24,7 @@ public class Bucles_4 { int sumatorio = 0; int min = 10; int max = 100; - for (int num = min; num <= max; num++) - { + for (int num = min; num <= max; num++) { sumatorio += num; } System.out.println(sumatorio); diff --git a/src/test/res/ejemplos/Bucles_5.java b/src/test/res/ejemplos/Bucles_5.java index b8558cd..e54d85e 100755 --- a/src/test/res/ejemplos/Bucles_5.java +++ b/src/test/res/ejemplos/Bucles_5.java @@ -5,29 +5,25 @@ public class Bucles_5 { public static void main(String[] args) { int x = 0; char y = '0'; - + // BUCLE FOR anidado a otro FOR - System.out.println("Empieza bucle FOR anidado a otro FOR:"); - for (x=1;x<=10;x++) - { - System.out.print(" "+x); - for (y='a';y<='c';y++) - { - System.out.print(" "+y); + System.out.println("Empieza bucle FOR anidado a otro FOR:"); + for (x = 1; x <= 10; x++) { + System.out.print(" " + x); + for (y = 'a'; y <= 'c'; y++) { + System.out.print(" " + y); } } System.out.println(); // BUCLE WHILE anidado a otro WHILE - System.out.println("Empieza bucle WHILE anidado a otro WHILE:"); - x=1; - while (x<=10) - { - System.out.print(" "+x); - y='a'; - while (y<='c') - { - System.out.print(" "+y); + System.out.println("Empieza bucle WHILE anidado a otro WHILE:"); + x = 1; + while (x <= 10) { + System.out.print(" " + x); + y = 'a'; + while (y <= 'c') { + System.out.print(" " + y); y++; } x++; @@ -35,18 +31,17 @@ public class Bucles_5 { System.out.println(); // BUCLE FOR anidado a bucle DO WHILE - System.out.println("Empieza bucle FOR anidado a bucle DO WHILE:"); - x=1; - do{ - System.out.print(" "+x); - for (y='a';y<='c';y++) - { - System.out.print(" "+y); + System.out.println("Empieza bucle FOR anidado a bucle DO WHILE:"); + x = 1; + do { + System.out.print(" " + x); + for (y = 'a'; y <= 'c'; y++) { + System.out.print(" " + y); } x++; } - while (x<=10); + while (x <= 10); System.out.println(); - + } } diff --git a/src/test/res/ejemplos/Bucles_6.java b/src/test/res/ejemplos/Bucles_6.java index a6df9d8..9ba83b5 100644 --- a/src/test/res/ejemplos/Bucles_6.java +++ b/src/test/res/ejemplos/Bucles_6.java @@ -2,26 +2,22 @@ package ejemplos; public class Bucles_6 { - public static void main(String[] args) - { + public static void main(String[] args) { // BUCLE WHILE (sin anidamiento) - System.out.println("Empieza bucle WHILE:"); - int x=1; - while (x<=10) - { - System.out.print(" "+x); + System.out.println("Empieza bucle WHILE:"); + int x = 1; + while (x <= 10) { + System.out.print(" " + x); x++; - while (x<=10) - { - System.out.print(" "+x); + while (x <= 10) { + System.out.print(" " + x); x++; } } - while (x<=10) - { - System.out.print(" "+x); + while (x <= 10) { + System.out.print(" " + x); x++; } - System.out.println(); + System.out.println(); } } diff --git a/src/test/res/ejemplos/Test_1.java b/src/test/res/ejemplos/Test_1.java index 9e387eb..7264be0 100644 --- a/src/test/res/ejemplos/Test_1.java +++ b/src/test/res/ejemplos/Test_1.java @@ -2,12 +2,11 @@ package ejemplos; public class Test_1 { - public static void main(String[] args) - { + public static void main(String[] args) { System.out.println("HOLA mundo"); - int x=1; - x=2; - x=3; - x=4; + int x = 1; + x = 2; + x = 3; + x = 4; } } diff --git a/src/test/res/ejemplos/Test_2.java b/src/test/res/ejemplos/Test_2.java index 4c4ee06..3ce1e38 100644 --- a/src/test/res/ejemplos/Test_2.java +++ b/src/test/res/ejemplos/Test_2.java @@ -2,13 +2,12 @@ package ejemplos; public class Test_2 { - public static void main(String[] args) - { - int x=1; + public static void main(String[] args) { + int x = 1; x++; ++x; - int y=0; - x=x+y; + int y = 0; + x = x + y; System.out.println(x); } } diff --git a/src/test/res/ejemplos/Test_3.java b/src/test/res/ejemplos/Test_3.java index 3d723af..e08b7f7 100644 --- a/src/test/res/ejemplos/Test_3.java +++ b/src/test/res/ejemplos/Test_3.java @@ -2,13 +2,12 @@ package ejemplos; public class Test_3 { - public static void main(String[] args) - { - int x=1; - - if (x==1) - x=2; - x=3; - x=4; + public static void main(String[] args) { + int x = 1; + + if (x == 1) + x = 2; + x = 3; + x = 4; } } diff --git a/src/test/res/ejemplos/Test_4.java b/src/test/res/ejemplos/Test_4.java index 60b318f..43e923c 100644 --- a/src/test/res/ejemplos/Test_4.java +++ b/src/test/res/ejemplos/Test_4.java @@ -2,20 +2,17 @@ package ejemplos; public class Test_4 { - public static void main(String[] args) - { - int x=1; - - if (x==1) - { - x=2; - if (x>=1) - { - x=3; - x=4; + public static void main(String[] args) { + int x = 1; + + if (x == 1) { + x = 2; + if (x >= 1) { + x = 3; + x = 4; } } - x=5; - x=6; + x = 5; + x = 6; } } diff --git a/src/test/res/ejemplos/Test_5.java b/src/test/res/ejemplos/Test_5.java index 1b3fec3..4dc96e4 100644 --- a/src/test/res/ejemplos/Test_5.java +++ b/src/test/res/ejemplos/Test_5.java @@ -2,21 +2,18 @@ package ejemplos; public class Test_5 { - public static void main(String[] args) - { - int x=1; - - if (x==1) - { - x=2; - if (x>=1) - { - x=3; - x=4; + public static void main(String[] args) { + int x = 1; + + if (x == 1) { + x = 2; + if (x >= 1) { + x = 3; + x = 4; } - x=5; + x = 5; } - x=6; - x=7; + x = 6; + x = 7; } } diff --git a/src/test/res/ejemplos/Test_6.java b/src/test/res/ejemplos/Test_6.java index d47ef13..91d0e19 100644 --- a/src/test/res/ejemplos/Test_6.java +++ b/src/test/res/ejemplos/Test_6.java @@ -2,20 +2,16 @@ package ejemplos; public class Test_6 { - public static void main(String[] args) - { - int x=1; - - if (x==1) - { - x=2; - x=3; + public static void main(String[] args) { + int x = 1; + + if (x == 1) { + x = 2; + x = 3; + } else { + x = 4; + x = 5; } - else - { - x=4; - x=5; - } - x=6; + x = 6; } } diff --git a/src/test/res/ejemplos/Test_7.java b/src/test/res/ejemplos/Test_7.java index eb81fb6..60b7f5f 100644 --- a/src/test/res/ejemplos/Test_7.java +++ b/src/test/res/ejemplos/Test_7.java @@ -3,21 +3,16 @@ package ejemplos; public class Test_7 { - public static void main(String[] args) - { - int x=1; - - if (x==1) - { - x=2; - } - else x=3; - x=4; - if (x==2) - { - x=5; - } - else if (x==3) x=6; - x=7; + public static void main(String[] args) { + int x = 1; + + if (x == 1) { + x = 2; + } else x = 3; + x = 4; + if (x == 2) { + x = 5; + } else if (x == 3) x = 6; + x = 7; } } diff --git a/src/test/res/ejemplos/Test_8.java b/src/test/res/ejemplos/Test_8.java index 839774a..92c240f 100644 --- a/src/test/res/ejemplos/Test_8.java +++ b/src/test/res/ejemplos/Test_8.java @@ -2,21 +2,18 @@ package ejemplos; public class Test_8 { - public static void main(String[] args) - { - int x=1; - - if (x==1) - { - x=2; + public static void main(String[] args) { + int x = 1; + + if (x == 1) { + x = 2; } - x=5; - x=6; - if (x==2) - { - x=7; + x = 5; + x = 6; + if (x == 2) { + x = 7; } - if (x==3) x=8; - x=9; + if (x == 3) x = 8; + x = 9; } } diff --git a/src/test/res/ejemplos/Test_9.java b/src/test/res/ejemplos/Test_9.java index a636299..95a3c53 100644 --- a/src/test/res/ejemplos/Test_9.java +++ b/src/test/res/ejemplos/Test_9.java @@ -2,29 +2,23 @@ package ejemplos; public class Test_9 { - - public static void main(String[] args) - { + + public static void main(String[] args) { // ANIDAMIENTO de IF y WHILE // ANIDAMIENTO de IF y WHILE 2 - - int x=0; - if (x>1) - { - x=1; - while (x>2) - { - x=2; - while (x>3) - { - x=3; - if (x>4) - { - x=4; - if (x>5) - { - x=5; + + int x = 0; + if (x > 1) { + x = 1; + while (x > 2) { + x = 2; + while (x > 3) { + x = 3; + if (x > 4) { + x = 4; + if (x > 5) { + x = 5; } x--; } @@ -34,8 +28,8 @@ public class Test_9 { } x--; } - + x--; - + } }