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