Difference between revisions of "Main Page"

From Contiki
Jump to: navigation, search
Line 20: Line 20:
 
== To-Do ==
 
== To-Do ==
 
* Find out how to input code lists with syntax highlighting. Install SyntaxHighlight extension (http://www.mediawiki.org/wiki/Extension:SyntaxHighlight) or ASHighlight extension (http://www.mediawiki.org/wiki/Extension:ASHighlight)
 
* Find out how to input code lists with syntax highlighting. Install SyntaxHighlight extension (http://www.mediawiki.org/wiki/Extension:SyntaxHighlight) or ASHighlight extension (http://www.mediawiki.org/wiki/Extension:ASHighlight)
 
<source lang="java">
 
              try {
 
                    AndroidAnalyzer analyzer = new AndroidAnalyzer(fileName);
 
 
                    Statement stmt = conn.createStatement();
 
                    ResultSet rs = stmt.executeQuery("select no from callgraph0 where no="+no);
 
 
                    if(!rs.next()) {
 
                        totalMethod = totalNativeMethods = totalClasses = packageMethods = packageNativeMethods = packageClasses = 0;
 
                        analyzer.buildCallGraph(false);
 
                        totalMethod = Scene.v().getReachableMethods().size();
 
                        QueueReader<MethodOrMethodContext> methods = Scene.v().getReachableMethods().listener();
 
                        Set<SootClass> classSet = new HashSet<SootClass>();
 
                        while (methods.hasNext()) {
 
                            SootMethod sm = methods.next().method();
 
                            classSet.add(sm.getDeclaringClass());
 
                            if (sm.isAndroidPackageMethod()) {
 
                                packageMethods++;
 
                            }
 
                            if (sm.isNative()) {
 
                                if (sm.isAndroidPackageMethod()) {
 
                                    packageNativeMethods++;
 
                                }
 
                                totalNativeMethods++;
 
                            }
 
                        }
 
 
                        for (SootClass sc : classSet) {
 
                            if (sc.isAPK()) {
 
                                packageClasses++;
 
                            }
 
                        }
 
                        totalClasses = classSet.size();
 
 
                        System.out.println("Reachable classes  = " + totalClasses);
 
                        System.out.println("Reachable package classes  = " + packageClasses);
 
                        System.out.println("Reachable methods  = " + totalMethod);
 
                        System.out.println("Reachable native methods  = " + totalNativeMethods);
 
                        System.out.println("Reachable package methods  = " + packageMethods);
 
                        System.out.println("Reachable package native methods  = " + packageNativeMethods);
 
 
                        try {
 
                            pstmt0 = conn.prepareStatement("insert into callgraph0(no,totalMethods,totalNativeMethods,totalClasses,packageMethods,packageNativeMethods,packageClasses) values(?,?,?,?,?,?,?)");
 
                            pstmt0.setString(1, no);
 
                            pstmt0.setInt(2, totalMethod);
 
                            pstmt0.setInt(3, totalNativeMethods);
 
                            pstmt0.setInt(4, totalClasses);
 
                            pstmt0.setInt(5, packageMethods);
 
                            pstmt0.setInt(6, packageNativeMethods);
 
                            pstmt0.setInt(7, packageClasses);
 
                            pstmt0.execute();
 
                            pstmt0.close();
 
                        } catch (Exception e) {
 
 
                        }
 
                    }
 
                    stmt.close();
 
                    rs.close();
 
 
 
                    stmt = conn.createStatement();
 
                    rs = stmt.executeQuery("select no from callgraph where no="+no);
 
                    if(!rs.next()) {
 
                        totalMethod = totalNativeMethods = totalClasses = packageMethods = packageNativeMethods = packageClasses = 0;
 
                        analyzer.buildCallGraph(true);
 
                        totalMethod = Scene.v().getReachableMethods().size();
 
                        QueueReader<MethodOrMethodContext> methods = Scene.v().getReachableMethods().listener();
 
                        Set<SootClass> classSet = new HashSet<SootClass>();
 
                        while (methods.hasNext()) {
 
                            SootMethod sm = methods.next().method();
 
                            classSet.add(sm.getDeclaringClass());
 
                            if (sm.isAndroidPackageMethod()) {
 
                                packageMethods++;
 
                            }
 
                            if (sm.isNative()) {
 
                                if (sm.isAndroidPackageMethod()) {
 
                                    packageNativeMethods++;
 
                                }
 
                                totalNativeMethods++;
 
                            }
 
                        }
 
 
                        for (SootClass sc : classSet) {
 
                            if (sc.isAPK()) {
 
                                packageClasses++;
 
                            }
 
                        }
 
                        totalClasses = classSet.size();
 
                        System.out.println("Reachable classes  = " + totalClasses);
 
                        System.out.println("Reachable package classes  = " + packageClasses);
 
                        System.out.println("Reachable methods  = " + totalMethod);
 
                        System.out.println("Reachable native methods  = " + totalNativeMethods);
 
                        System.out.println("Reachable package methods  = " + packageMethods);
 
                        System.out.println("Reachable package native methods  = " + packageNativeMethods);
 
                        try {
 
                            pstmt1 = conn.prepareStatement("insert into callgraph(no,totalMethods,totalNativeMethods,totalClasses,packageMethods,packageNativeMethods,packageClasses) values(?,?,?,?,?,?,?)");
 
                            pstmt1.setString(1, no);
 
                            pstmt1.setInt(2, totalMethod);
 
                            pstmt1.setInt(3, totalNativeMethods);
 
                            pstmt1.setInt(4, totalClasses);
 
                            pstmt1.setInt(5, packageMethods);
 
                            pstmt1.setInt(6, packageNativeMethods);
 
                            pstmt1.setInt(7, packageClasses);
 
                            pstmt1.execute();
 
                            pstmt1.close();
 
                        } catch (Exception e) {
 
 
                        }
 
                    }
 
                    stmt.close();
 
                    rs.close();
 
                } catch (Exception e) {
 
                    e.printStackTrace();
 
                }
 
</source>
 

Revision as of 11:42, 4 November 2014

Contiki Development at ANRG, University of Southern California

Team

Getting started

Useful links

To-Do