Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* Soot - a J*va Optimization Framework
   * Copyright (C) 2003 Ondrej Lhotak
   *
   * 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;
 import soot.util.*;
 import java.util.*;


Returns the various potential entry points of a Java program.

Author(s):
Ondrej Lhotak
 
 public class EntryPoints
 { 
     public EntryPointsSingletons.Global g ) {}
     public static EntryPoints v() { return G.v().soot_EntryPoints(); }
 
     final NumberedString sigMain = Scene.v().getSubSigNumberer().
         findOrAdd"void main(java.lang.String[])" );
     final NumberedString sigFinalize = Scene.v().getSubSigNumberer().
         findOrAdd"void finalize()" );
     final NumberedString sigExit = Scene.v().getSubSigNumberer().
         findOrAdd"void exit()" );
     final NumberedString sigClinit = Scene.v().getSubSigNumberer().
         findOrAdd"void <clinit>()" );
     final NumberedString sigInit = Scene.v().getSubSigNumberer().
         findOrAdd"void <init>()" );
     final NumberedString sigStart = Scene.v().getSubSigNumberer().
         findOrAdd"void start()" );
     final NumberedString sigRun = Scene.v().getSubSigNumberer().
         findOrAdd"void run()" );
     final NumberedString sigObjRun = Scene.v().getSubSigNumberer().
         findOrAdd"java.lang.Object run()" );
     final NumberedString sigForName = Scene.v().getSubSigNumberer().
         findOrAdd"java.lang.Class forName(java.lang.String)" );
     private final void addMethodList<SootMethodsetSootClass clsNumberedString methodSubSig ) {
         ifcls.declaresMethodmethodSubSig ) ) {
             set.addcls.getMethodmethodSubSig ) );
         }
     }
     private final void addMethodList<SootMethodsetString methodSig ) {
         if( Scene.v().containsMethodmethodSig ) ) {
             set.add( Scene.v().getMethodmethodSig ) );
         }
     }
    
Returns only the application entry points, not including entry points invoked implicitly by the VM.
 
     public List<SootMethodapplication() {
         List<SootMethodret = new ArrayList<SootMethod>();
         if(Scene.v().hasMainClass() || !Scene.v().hasCustomEntryPoints())
         	addMethodret, Scene.v().getMainClass(),  );
         for (SootMethod clinit : clinitsOf(Scene.v().getMainClass() )) {
             ret.add(clinit);
         }
         return ret;
     }
    
Returns only the entry points invoked implicitly by the VM.
 
     public List<SootMethodimplicit() {
         List<SootMethodret = new ArrayList<SootMethod>();
         addMethodret"<java.lang.System: void initializeSystemClass()>" );
         addMethodret"<java.lang.ThreadGroup: void <init>()>");
         //addMethod( ret, "<java.lang.ThreadGroup: void remove(java.lang.Thread)>");
         addMethodret"<java.lang.Thread: void exit()>");
         addMethodret"<java.lang.ThreadGroup: void uncaughtException(java.lang.Thread,java.lang.Throwable)>");
         //addMethod( ret, "<java.lang.System: void loadLibrary(java.lang.String)>");
         addMethodret"<java.lang.ClassLoader: void <init>()>");
         addMethodret"<java.lang.ClassLoader: java.lang.Class loadClassInternal(java.lang.String)>");
         addMethodret"<java.lang.ClassLoader: void checkPackageAccess(java.lang.Class,java.security.ProtectionDomain)>");
         addMethodret"<java.lang.ClassLoader: void addClass(java.lang.Class)>");
         addMethodret"<java.lang.ClassLoader: long findNative(java.lang.ClassLoader,java.lang.String)>");
         addMethodret"<java.security.PrivilegedActionException: void <init>(java.lang.Exception)>");
         //addMethod( ret, "<java.lang.ref.Finalizer: void register(java.lang.Object)>");
         addMethodret"<java.lang.ref.Finalizer: void runFinalizer()>");
         addMethodret"<java.lang.Thread: void <init>(java.lang.ThreadGroup,java.lang.Runnable)>");
         addMethodret"<java.lang.Thread: void <init>(java.lang.ThreadGroup,java.lang.String)>");
         return ret;
     }
    
Returns all the entry points.
 
     public List<SootMethodall() {
         List<SootMethodret = new ArrayList<SootMethod>();
         ret.addAllapplication() );
         ret.addAllimplicit() );
         return ret;
     }
    
Returns a list of all static initializers.
    public List<SootMethodclinits() {
        List<SootMethodret = new ArrayList<SootMethod>();
        forIterator clIt = Scene.v().getClasses().iterator(); clIt.hasNext(); ) {
            final SootClass cl = (SootClassclIt.next();
            addMethodretcl );
        }
        return ret;
    }
    
Returns a list of all constructors taking no arguments.
    public List<SootMethodinits() {
        List<SootMethodret = new ArrayList<SootMethod>();
        forIterator clIt = Scene.v().getClasses().iterator(); clIt.hasNext(); ) {
            final SootClass cl = (SootClassclIt.next();
            addMethodretcl );
        }
        return ret;
    }
    
    
Returns a list of all constructors.
    public List<SootMethodallInits() {
        List<SootMethodret = new ArrayList<SootMethod>();
        forIterator clIt = Scene.v().getClasses().iterator(); clIt.hasNext(); ) {
            final SootClass cl = (SootClassclIt.next();
            for(SootMethod mcl.getMethods()) {
            	if(m.getName().equals("<init>")) {
            		ret.add(m);
            	}
            }
        }
        return ret;
    }

    
Returns a list of all concrete methods of all application classes.
        List<SootMethodret = new ArrayList<SootMethod>();
        forIterator clIt = Scene.v().getApplicationClasses().iterator(); clIt.hasNext(); ) {
            final SootClass cl = (SootClassclIt.next();
            forIterator mIt = cl.getMethods().iterator(); mIt.hasNext(); ) {
                final SootMethod m = (SootMethodmIt.next();
                ifm.isConcrete() ) ret.addm );
            }
        }
        return ret;
    }

    
Returns a list of all concrete main(String[]) methods of all application classes.
        List<SootMethodret = new ArrayList<SootMethod>();
        forIterator clIt = Scene.v().getApplicationClasses().iterator(); clIt.hasNext(); ) {
            final SootClass cl = (SootClassclIt.next();
            ifcl.declaresMethod"void main(java.lang.String[])" ) ) {
                SootMethod m = cl.getMethod("void main(java.lang.String[])" );
                ifm.isConcrete() ) ret.addm );
            }
        }
        return ret;
    }

    
Returns a list of all clinits of class cl and its superclasses.
    public List<SootMethodclinitsOfSootClass cl ) {
        List<SootMethodret = new ArrayList<SootMethod>();
        while(true) {
            addMethodretcl );
            if( !cl.hasSuperclass() ) break;
            cl = cl.getSuperclass();
        }
        return ret;
    }
New to GrepCode? Check out our FAQ X