Home | History | Annotate | Download | only in analysis
      1 <html>
      2 <!--
      3  * ASM: a very small and fast Java bytecode manipulation framework
      4  * Copyright (c) 2000-2005 INRIA, France Telecom
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  * 3. Neither the name of the copyright holders nor the names of its
     16  *    contributors may be used to endorse or promote products derived from
     17  *    this software without specific prior written permission.
     18  *
     19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
     23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     29  * THE POSSIBILITY OF SUCH DAMAGE.
     30 -->
     31 <body>
     32 
     33 <p>
     34 Provides a framework for static code analysis based on the asm.tree package.
     35 </p>
     36 
     37 <p>
     38 Basic usage:
     39 </p>
     40 
     41 <pre>
     42 ClassReader cr = new ClassReader(bytecode);
     43 ClassNode cn = new ClassNode();
     44 cr.accept(cn, ClassReader.SKIP_DEBUG);
     45 
     46 List methods = cn.methods;
     47 for (int i = 0; i < methods.size(); ++i) {
     48     MethodNode method = (MethodNode) methods.get(i);
     49     if (method.instructions.size() > 0) {
     50         Analyzer a = new Analyzer(new BasicInterpreter());
     51         a.analyze(cn.name, method);
     52         Frame[] frames = a.getFrames();
     53         // Elements of the frames arrray now contains info for each instruction 
     54         // from the analyzed method. BasicInterpreter creates BasicValue, that
     55         // is using simplified type system that distinguishes the UNINITIALZED, 
     56         // INT, FLOAT, LONG, DOUBLE, REFERENCE and RETURNADDRESS types.
     57         ...
     58     }
     59 }   
     60 </pre>
     61 
     62 <p>
     63 @since ASM 1.4.3
     64 </p>
     65 
     66 </body>
     67 </html>
     68