/** * Context length (k) * The maximum length of call string or receiver object string used * as context. */ public int k() { return soot.PhaseOptions.getInt(options, "k"); }
/** * Maximal traversal -- * Make the analysis traverse at most this number of nodes per * query. * * Make the analysis traverse at most this number of nodes per * query. This quota is evenly shared between multiple passes (see * next option). */ public int traversal() { return soot.PhaseOptions.getInt(options, "traversal"); }
/** * Max Container Size * Determines the maximum number of Jimple statements for a * container method. If a method has more than this number of * Jimple statements, then no methods will be inlined into it. */ public int max_container_size() { return soot.PhaseOptions.getInt(options, "max-container-size"); }
/** * JDK version -- * JDK version for native methods. * * This option sets the JDK version of the standard library being * analyzed so that Soot can simulate the native methods in the * specific version of the library. The default, 3, refers to Java * 1.3.x. */ public int jdkver() { return soot.PhaseOptions.getInt(options, "jdkver"); }
/** * Maximum number of fields * If a statement reads/writes more than this number of fields, no * tag will be produced for it, in order to keep the size of the * tags reasonable. */ public int threshold() { return soot.PhaseOptions.getInt(options, "threshold"); }
/** * Iterations -- * Iterations of analysis. * * We can run multiple times of the geometric analysis to * continuously improve the analysis precision. */ public int geom_runs() { return soot.PhaseOptions.getInt(options, "geom-runs"); }
/** * Max Inlinee Size * Determines the maximum number of Jimple statements for an * inlinee method. If a method has more than this number of Jimple * statements, then it will not be inlined into other methods. */ public int max_inlinee_size() { return soot.PhaseOptions.getInt(options, "max-inlinee-size"); }
/** * Variable ordering * Selects one of the BDD variable orderings hard-coded in Paddle. */ public int order() { return soot.PhaseOptions.getInt(options, "order"); }
/** * Maximal number of passes -- * Perform at most this number of refinement iterations. * * Perform at most this number of refinement iterations. Each * iteration traverses at most ( traverse / passes ) nodes. */ public int passes() { return soot.PhaseOptions.getInt(options, "passes"); }
/** * Fractional parameter -- * Fractional parameter for precision/performance trade-off. * * This option specifies the fractional parameter, which manually * balances the precision and the performance. Smaller value means * better performance and worse precision. */ public int geom_frac_base() { return soot.PhaseOptions.getInt(options, "geom-frac-base"); }
/** * BDD Nodes -- * Number of BDD nodes to allocate (0=unlimited). * * This option specifies the number of BDD nodes to be used by the * BDD backend. A value of 0 causes the backend to start with one * million nodes, and allocate more as required. A value other than * zero causes the backend to start with the specified size, and * prevents it from ever allocating any more nodes. */ public int bdd_nodes() { return soot.PhaseOptions.getInt(options, "bdd-nodes"); }
/** * Precision evaluation methodologies -- * Precision evaluation methodologies. * * We internally provide some precision evaluation methodologies * and classify the evaluation strength into three levels. If level * is 0, we do nothing. If level is 1, we report the statistical * information about the points-to result. If level is 2, we * perform the virtual callsite resolution, static cast safety and * all-pairs alias evaluations. */ public int geom_eval() { return soot.PhaseOptions.getInt(options, "geom-eval"); }
protected void internalTransform(Body body, String phaseName, Map options) { int threshold = PhaseOptions.getInt(options, "threshold");
/** * unrolls conditions. */ /* * this implementation still fails in finding all possible while-loops, but does a good job. */ protected void internalTransform(Body body, String phaseName, Map<String, String> options) { if (Options.v().verbose()) { logger.debug("[" + body.getMethod().getName() + "] Unrolling Loop Conditions..."); } visitingSuccs = new HashSet<Block>(); visitedBlocks = new HashSet<Block>(); this.body = body; this.maxSize = PhaseOptions.getInt(options, "maxSize"); BlockGraph bg = new BriefBlockGraph(body); for (Block b : bg.getHeads()) { unrollConditions(b); } if (Options.v().verbose()) { logger.debug("[" + body.getMethod().getName() + "] Unrolling Loop Conditions done."); } }
String modifierOptions = PhaseOptions.getString(options, "allowed-modifier-changes"); float expansionFactor = PhaseOptions.getFloat(options, "expansion-factor"); int maxContainerSize = PhaseOptions.getInt(options, "max-container-size"); int maxInlineeSize = PhaseOptions.getInt(options, "max-inlinee-size"); boolean rerunJb = PhaseOptions.getBoolean(options, "rerun-jb");
/** JDK version -- * JDK version for native methods. * This option sets the JDK version of the standard library being * analyzed so that Soot can simulate the native methods in the * specific version of the library. The default, 3, refers to Java * 1.3.x. */ public int jdkver() { return soot.PhaseOptions.getInt( options, "jdkver" ); }
/** Maximal number of passes -- * Perform at most this number of refinement iterations.. * Perform at most this number of refinement iterations. Each * iteration traverses at most ( traverse / passes ) nodes. * */ public int passes() { return soot.PhaseOptions.getInt( options, "passes" ); }
/** Max Container Size -- * . * Determines the maximum number of Jimple statements for a * container method. If a method has more than this number of * Jimple statements, then no methods will be inlined into it. * */ public int max_container_size() { return soot.PhaseOptions.getInt( options, "max-container-size" ); }
/** Max Inlinee Size -- * . * Determines the maximum number of Jimple statements for an * inlinee method. If a method has more than this number of Jimple * statements, then it will not be inlined into other methods. * */ public int max_inlinee_size() { return soot.PhaseOptions.getInt( options, "max-inlinee-size" ); }
/** Context length (k) -- * . * The maximum length of * call string or receiver object string used as context. * */ public int k() { return soot.PhaseOptions.getInt( options, "k" ); }