DavaBuildFile.java :  » Code-Analyzer » soot » soot » dava » Java Open Source

Java Open Source » Code Analyzer » soot 
soot » soot » dava » DavaBuildFile.java
/* Soot - a J*va Optimization Framework
 * Copyright (C) 2006 Nomair A. Naeem
 *
 * This library 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 library 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 library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

package soot.dava;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;



/*
 * TODO: Jalopy would be awesome here!!
 */
public class DavaBuildFile {
  public static void generate(PrintWriter out, ArrayList<String> decompiledClasses){
    out.print("<project default=\"compile\" name=\"Build file for decompiled code\">\n");
    out.print("  <description>\n");
    out.print("  This is the build file produced by Dava for the decompiled code.\n");
    out.print("  New features like (formatting using jalopy etc) will be added to this build file\n");
    out.print("</description>\n");
    out.print("<!-- properties for project directories -->\n");
    out.print("<property name=\"srcDir\" location=\"src\"/>\n");
    out.print("<property name=\"classesDir\" location=\"classes\"/>\n");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
/*    out.print("<target name=\"init\" description=\"Create necessary directories\">\n");
    out.print("<tstamp/>\n");
    out.print("    <!-- set the timestamps -->\n");
    out.print("    <mkdir dir=\"${classesDir}\"/>\n");
    out.print("    <mkdir dir=\"${docDir}\"/>\n");
//    out.print("    <mkdir dir=\"${libDir}\"/>\n");
    out.print("</target>\n");
    */
    out.print("  <!--  ========== Compile Target ================= -->\n");
    out.print("  <target name=\"compile\" description=\"Compile .java files\">\n");
    out.print("  <javac srcdir=\"${srcDir}\" destdir=\"${classesDir}\">\n");
    out.print("    <classpath>\n");
    out.print("     <pathelement location=\"${junitJar}\"/>\n");
    out.print("    </classpath>\n");
    out.print("   </javac>\n");
    out.print("  </target>\n");

    
    
    
    out.print("  <!--  ==========AST METRICS FOR DECOMPILED CODE================= -->\n");
    out.print("<target name=\"ast-metrics\" description=\"Compute the ast metrics\">\n");
    /*
     * NEED TO MAKE SURE SRC-PREC IS SET so that java to jimple gets evaluate
     * The command is going to be java soot.Main -ast-metrics followed by 
     * all the classes on which we had originally done the decompile
     * Need a specialized task
     */
    
    out.print("   <exec executable=\"java\" dir=\"src\">\n");
    out.print("    <arg value=\"-Xmx400m\" />\n");
    out.print("    <arg value=\"soot.Main\" />\n");
    out.print("    <arg value=\"-ast-metrics\" />\n");
    out.print("    <arg value=\"--src-prec\" />\n");
    out.print("    <arg value=\"java\" />\n");

    
    Iterator<String> it = decompiledClasses.iterator();
    while(it.hasNext()){
      String temp = it.next();
      if(temp.endsWith(".java")){
        temp = temp.substring(0,temp.length()-5);
      }
      //System.out.println(temp);
      out.print("    <arg value=\"" + temp + "\" />\n");
      
    }

    out.print("");
    out.print("    </exec>\n");
    out.print("  </target>\n");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
    out.print("");
    out.print("</project>");


  }
}
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.