01: /*
02: * Bytecode Analysis Framework
03: * Copyright (C) 2003,2004 University of Maryland
04: *
05: * This library is free software; you can redistribute it and/or
06: * modify it under the terms of the GNU Lesser General Public
07: * License as published by the Free Software Foundation; either
08: * version 2.1 of the License, or (at your option) any later version.
09: *
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
|