KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > umd > cs > findbugs > ba > AnalysisFeatures


1 /*
2  * Bytecode Analysis Framework
3  * Copyright (C) 2003,2004 University of Maryland
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19
20 package edu.umd.cs.findbugs.ba;
21
22 /**
23  * Boolean analysis properties for use in the AnalysisContext.
24  * These can be used to enable or disable various analysis features
25  * in the bytecode analysis framework.
26  *
27  * @author David Hovemeyer
28  */

29 public interface AnalysisFeatures {
30     /**
31      * Determine (1) what exceptions can be thrown on exception edges,
32      * (2) which catch blocks are reachable, and (3) which exception
33      * edges carry only "implicit" runtime exceptions.
34      */

35     public static final int ACCURATE_EXCEPTIONS = 0;
36
37     /**
38      * A boolean flag which if set means that analyses should try to
39      * conserve space at the expense of precision.
40      */

41     public static final int CONSERVE_SPACE = 1;
42     
43     /**
44      * If true, model the effect of instanceof checks in type analysis.
45      */

46     public static final int MODEL_INSTANCEOF = 2;
47
48     /**
49      * Skip generating CFG's and methodGen's for huge methods
50      */

51     public static final int SKIP_HUGE_METHODS = 3;
52     
53     /**
54      * Perform interative opcode stack analysis
55      */

56     public static final int INTERATIVE_OPCODE_STACK_ANALYSIS = 4;
57
58     /**
59      * In the null pointer analysis, track null values that are
60      * guaranteed to be dereferenced on some (non-implicit-exception) path.
61      */

62     public static final int TRACK_GUARANTEED_VALUE_DEREFS_IN_NULL_POINTER_ANALYSIS = 5;
63     
64     /**
65      * In the null pointer analysis, track value numbers that are known to be
66      * null. This allows us to not lose track of null values that are not
67      * currently in the stack frame but might be in a heap location
68      * where the value is recoverable by redundant load elimination or
69      * forward substitution.
70      */

71     public static final int TRACK_VALUE_NUMBERS_IN_NULL_POINTER_ANALYSIS = 6;
72     
73     /**
74      * Number of boolean analysis properties reserved for the bytecode analysis framework.
75      * Clients of the framework may use property values >= this value.
76      */

77     public static final int NUM_BOOLEAN_ANALYSIS_PROPERTIES = 128;
78
79 }
80
81 // vim:ts=4
82
Popular Tags