forked from CROSSINGTUD/SPDS
-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathBoomerangOptions.java
108 lines (74 loc) · 2.56 KB
/
BoomerangOptions.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/**
* ***************************************************************************** Copyright (c) 2018
* Fraunhofer IEM, Paderborn, Germany. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* <p>SPDX-License-Identifier: EPL-2.0
*
* <p>Contributors: Johannes Spaeth - initial API and implementation
* *****************************************************************************
*/
package boomerang;
import boomerang.callgraph.BoomerangResolver;
import boomerang.callgraph.ICallerCalleeResolutionStrategy.Factory;
import boomerang.flowfunction.IBackwardFlowFunction;
import boomerang.flowfunction.IForwardFlowFunction;
import boomerang.scene.AllocVal;
import boomerang.scene.Method;
import boomerang.scene.Statement;
import boomerang.scene.Val;
import boomerang.stats.IBoomerangStats;
import java.util.Optional;
public interface BoomerangOptions {
default Factory getResolutionStrategy() {
return BoomerangResolver.FACTORY;
}
void checkValid();
boolean trackImplicitFlows();
boolean handleMaps();
IForwardFlowFunction getForwardFlowFunctions();
enum StaticFieldStrategy {
FLOW_SENSITIVE,
SINGLETON,
IGNORE
}
StaticFieldStrategy getStaticFieldStrategy();
enum ArrayStrategy {
DISABLED,
INDEX_SENSITIVE,
INDEX_INSENSITIVE
}
ArrayStrategy getArrayStrategy();
boolean typeCheck();
boolean onTheFlyCallGraph();
boolean throwFlows();
boolean callSummaries();
boolean fieldSummaries();
int analysisTimeoutMS();
Optional<AllocVal> getAllocationVal(Method m, Statement stmt, Val fact);
IBoomerangStats statsFactory();
boolean aliasing();
/**
* Assume we propagate an object of soot.NullType in variable y and the propagation reaches a
* statement x = (Object) y.
*
* @return If set to true, the propagation will NOT continue in x. This does not match the runtime
* semantics. At runtime, null can be cast to any RefType! Though a check (null instanceof
* Object) returns false.
*/
boolean killNullAtCast();
boolean trackReturnOfInstanceOf();
boolean trackStaticFieldAtEntryPointToClinit();
boolean trackFields();
int maxFieldDepth();
int maxCallDepth();
int maxUnbalancedCallDepth();
boolean onTheFlyControlFlow();
boolean ignoreInnerClassFields();
boolean trackPathConditions();
boolean prunePathConditions();
boolean trackDataFlowPath();
boolean allowMultipleQueries();
IBackwardFlowFunction getBackwardFlowFunction();
}