ASTDumper.java :  » Code-Analyzer » doctorj » org » incava » java » Java Open Source

Java Open Source » Code Analyzer » doctorj 
doctorj » org » incava » java » ASTDumper.java
package org.incava.java;

import java.io.*;
import java.util.*;
import net.sourceforge.pmd.ast.*;


public class ASTDumper
{
    public static void main(String[] args)
    {
        long totalInitTime  = 0;
        long totalParseTime = 0;
        long totalDumpTime  = 0;

        JavaParser parser = null;
        int ai = 0;
        boolean astDump = false;
        
        if (ai < args.length && args[ai].equals("--dump")) {
            astDump = true;
            ++ai;
        }

        for (; ai < args.length; ++ai) {
            String filename = args[ai];
            long   initTime;

            // System.out.println("Reading from file " + filename + " . . .");
            try {
                long initStartTime = System.currentTimeMillis();
                JavaCharStream jcs = new JavaCharStream(new FileInputStream(filename));
                if (parser == null) {
                    parser = new JavaParser(jcs);
                }
                else {
                    parser.ReInit(jcs);
                }
                long initStopTime = System.currentTimeMillis();
                initTime = initStopTime - initStartTime;
                totalInitTime += initTime;
            }
            catch (FileNotFoundException e) {
                System.out.println("File not found: " + filename);
                continue;
            }

            try {
                long parseStartTime = System.currentTimeMillis();
                ASTCompilationUnit cu = parser.CompilationUnit();
                
                long parseStopTime  = System.currentTimeMillis();
                long parseTime      = parseStopTime - parseStartTime;

                totalParseTime += parseTime;

                long dumpTime = 0;

                if (astDump) {
                    long dumpStartTime = System.currentTimeMillis();

                    cu.dump("");

                    long dumpStopTime = System.currentTimeMillis();
                    dumpTime = dumpStopTime - dumpStartTime;
                    totalDumpTime += dumpTime;
                }

                System.out.println("    " + filename);
                System.out.println("        init time : " + initTime  + " ms.");
                System.out.println("        parse time: " + parseTime + " ms.");
                if (astDump) {
                    System.out.println("        dump time : " + dumpTime  + " ms.");
                }
                System.out.println("        total time: " + (initTime + parseTime) + " ms.");
            }
            catch (ParseException e) {
                System.out.println(e.getMessage());
                System.out.println("Encountered errors during parse.");
            }
        }

        System.out.println("    " + args.length + " files");
        System.out.println("        init time : " + totalInitTime  + " ms.");
        System.out.println("        parse time: " + totalParseTime + " ms.");
        if (astDump) {
            System.out.println("        dump time : " + totalDumpTime  + " ms.");
        }
        System.out.println("        total time: " + (totalInitTime + totalParseTime + totalDumpTime) + " ms.");
    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.