1 package org.incava.java; 2 3 import java.io.*; 4 import java.util.*; 5 import net.sourceforge.pmd.ast.*; 6 7 8 public class ASTDumper 9 { 10 public static void main(String [] args) 11 { 12 long totalInitTime = 0; 13 long totalParseTime = 0; 14 long totalDumpTime = 0; 15 16 JavaParser parser = null; 17 int ai = 0; 18 boolean astDump = false; 19 20 if (ai < args.length && args[ai].equals("--dump")) { 21 astDump = true; 22 ++ai; 23 } 24 25 for (; ai < args.length; ++ai) { 26 String filename = args[ai]; 27 long initTime; 28 29 try { 31 long initStartTime = System.currentTimeMillis(); 32 JavaCharStream jcs = new JavaCharStream(new FileInputStream(filename)); 33 if (parser == null) { 34 parser = new JavaParser(jcs); 35 } 36 else { 37 parser.ReInit(jcs); 38 } 39 long initStopTime = System.currentTimeMillis(); 40 initTime = initStopTime - initStartTime; 41 totalInitTime += initTime; 42 } 43 catch (FileNotFoundException e) { 44 System.out.println("File not found: " + filename); 45 continue; 46 } 47 48 try { 49 long parseStartTime = System.currentTimeMillis(); 50 ASTCompilationUnit cu = parser.CompilationUnit(); 51 52 long parseStopTime = System.currentTimeMillis(); 53 long parseTime = parseStopTime - parseStartTime; 54 55 totalParseTime += parseTime; 56 57 long dumpTime = 0; 58 59 if (astDump) { 60 long dumpStartTime = System.currentTimeMillis(); 61 62 cu.dump(""); 63 64 long dumpStopTime = System.currentTimeMillis(); 65 dumpTime = dumpStopTime - dumpStartTime; 66 totalDumpTime += dumpTime; 67 } 68 69 System.out.println(" " + filename); 70 System.out.println(" init time : " + initTime + " ms."); 71 System.out.println(" parse time: " + parseTime + " ms."); 72 if (astDump) { 73 System.out.println(" dump time : " + dumpTime + " ms."); 74 } 75 System.out.println(" total time: " + (initTime + parseTime) + " ms."); 76 } 77 catch (ParseException e) { 78 System.out.println(e.getMessage()); 79 System.out.println("Encountered errors during parse."); 80 } 81 } 82 83 System.out.println(" " + args.length + " files"); 84 System.out.println(" init time : " + totalInitTime + " ms."); 85 System.out.println(" parse time: " + totalParseTime + " ms."); 86 if (astDump) { 87 System.out.println(" dump time : " + totalDumpTime + " ms."); 88 } 89 System.out.println(" total time: " + (totalInitTime + totalParseTime + totalDumpTime) + " ms."); 90 } 91 92 } 93 | Popular Tags |