soot.options.Options.interactive_mode()方法的使用及代码示例

x33g5p2x  于2022-01-26 转载在 其他  
字(8.1k)|赞(0)|评价(0)|浏览(176)

本文整理了Java中soot.options.Options.interactive_mode()方法的一些代码示例,展示了Options.interactive_mode()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Options.interactive_mode()方法的具体详情如下:
包路径:soot.options.Options
类名称:Options
方法名:interactive_mode

Options.interactive_mode介绍

暂无

代码示例

代码示例来源:origin: Sable/soot

/** Constructs a flow analysis on the given <code>DirectedGraph</code>. */
public AbstractFlowAnalysis(DirectedGraph<N> graph) {
 unitToBeforeFlow = new IdentityHashMap<N, A>(graph.size() * 2 + 1);
 this.graph = graph;
 if (Options.v().interactive_mode()) {
  InteractionHandler.v().handleCfgEvent(graph);
 }
}

代码示例来源:origin: Sable/soot

protected void internalApply(Body b) {
 for (Iterator<Transform> tIt = this.iterator(); tIt.hasNext();) {
  final Transform t = tIt.next();
  if (Options.v().interactive_mode()) {
   // logger.debug("sending transform: "+t.getPhaseName()+" for body: "+b+" for body pack: "+this.getPhaseName());
   InteractionHandler.v().handleNewAnalysis(t, b);
  }
  t.apply(b);
  if (Options.v().interactive_mode()) {
   InteractionHandler.v().handleTransformDone(t, b);
  }
 }
}

代码示例来源:origin: Sable/soot

@Override
protected Map<Value, Parity> newInitialFlow() {
 Map<Value, Parity> initMap = new HashMap<Value, Parity>();
 for (Local l : g.getBody().getLocals()) {
  Type t = l.getType();
  // System.out.println("next local: "+next);
  if ((t instanceof IntegerType) || (t instanceof LongType)) {
   initMap.put(l, BOTTOM);
  }
 }
 for (ValueBox vb : g.getBody().getUseAndDefBoxes()) {
  Value val = vb.getValue();
  if (val instanceof ArithmeticConstant) {
   initMap.put(val, getParity(initMap, val));
  }
 }
 if (Options.v().interactive_mode()) {
  updateBeforeFilterMap();
 }
 return initMap;
}

代码示例来源:origin: Sable/soot

final int doAnalysis(GraphView gv, InteractionFlowHandler ifh, Map<N, A> inFlow, Map<N, A> outFlow) {
 assert gv != null;
 assert ifh != null;
 ifh = Options.v().interactive_mode() ? ifh : InteractionFlowHandler.NONE;
 final List<Entry<N, A>> universe = Orderer.INSTANCE.newUniverse(graph, gv, entryInitialFlow(), isForward());
 initFlow(universe, inFlow, outFlow);
 Queue<Entry<N, A>> q = PriorityQueue.of(universe, true);
 // Perform fixed point flow analysis
 for (int numComputations = 0;; numComputations++) {
  Entry<N, A> e = q.poll();
  if (e == null) {
   return numComputations;
  }
  meetFlows(e);
  // Compute beforeFlow and store it.
  ifh.handleFlowIn(this, e.data);
  boolean hasChanged = flowThrough(e);
  ifh.handleFlowOut(this, e.data);
  // Update queue appropriately
  if (hasChanged) {
   q.addAll(Arrays.asList(e.out));
  }
 }
}

代码示例来源:origin: Sable/soot

protected void internalTransform(String phaseName, Map options) {
 CGGOptions opts = new CGGOptions(options);
 if (opts.show_lib_meths()) {
  setShowLibMeths(true);
 }
 cg = Scene.v().getCallGraph();
 if (Options.v().interactive_mode()) {
  reset();
 }
}

代码示例来源:origin: Sable/soot

if (Options.v().interactive_mode()) {
 InteractionHandler ih = InteractionHandler.v();
 A savedFlow = newInitialFlow();
if (Options.v().interactive_mode()) {
 List<A> l = new ArrayList<A>();
 if (!afterFallFlow.isEmpty()) {

代码示例来源:origin: Sable/soot

if (Options.v().interactive_mode()) {
 buildAfterFilterMap(s);
 updateAfterFilterMap(s);

代码示例来源:origin: Sable/soot

protected void internalTransform(Body b, String phaseName, Map options) {
 boolean isInteractive = Options.v().interactive_mode();
 Options.v().set_interactive_mode(false);
 ParityAnalysis a;

代码示例来源:origin: Sable/soot

if (Options.v().interactive_mode()) {
 if (InteractionHandler.v().getInteractionListener() == null) {
  logger.debug("Cannot run in interactive mode. No listeners available. Continuing in regular mode.");

代码示例来源:origin: com.bugvm/bugvm-soot

/** Constructs a flow analysis on the given <code>DirectedGraph</code>. */
public AbstractFlowAnalysis(DirectedGraph<N> graph)
{
  unitToBeforeFlow = new HashMap<N,A>(graph.size() * 2 + 1, 0.7f);
  this.graph = graph;
  if (Options.v().interactive_mode()){
    InteractionHandler.v().handleCfgEvent(graph);
  }
}

代码示例来源:origin: ibinti/bugvm

/** Constructs a flow analysis on the given <code>DirectedGraph</code>. */
public AbstractFlowAnalysis(DirectedGraph<N> graph)
{
  unitToBeforeFlow = new HashMap<N,A>(graph.size() * 2 + 1, 0.7f);
  this.graph = graph;
  if (Options.v().interactive_mode()){
    InteractionHandler.v().handleCfgEvent(graph);
  }
}

代码示例来源:origin: ibinti/bugvm

protected void internalApply(Body b)
{
  for( Iterator tIt = this.iterator(); tIt.hasNext(); ) {
    final Transform t = (Transform) tIt.next();
    if (Options.v().interactive_mode()){
      //G.v().out.println("sending transform: "+t.getPhaseName()+" for body: "+b+" for body pack: "+this.getPhaseName());
      InteractionHandler.v().handleNewAnalysis(t, b);
    }
    t.apply(b);
    if (Options.v().interactive_mode()){
      InteractionHandler.v().handleTransformDone(t, b);
    }
  }
}

代码示例来源:origin: com.bugvm/bugvm-soot

protected void internalApply(Body b)
{
  for( Iterator tIt = this.iterator(); tIt.hasNext(); ) {
    final Transform t = (Transform) tIt.next();
    if (Options.v().interactive_mode()){
      //G.v().out.println("sending transform: "+t.getPhaseName()+" for body: "+b+" for body pack: "+this.getPhaseName());
      InteractionHandler.v().handleNewAnalysis(t, b);
    }
    t.apply(b);
    if (Options.v().interactive_mode()){
      InteractionHandler.v().handleTransformDone(t, b);
    }
  }
}

代码示例来源:origin: com.bugvm/bugvm-soot

protected Object newInitialFlow()
{
  HashMap<Value, String> initMap = new HashMap<Value, String>();

  Chain locals = g.getBody().getLocals();
  Iterator it = locals.iterator();
  while (it.hasNext()) {
    Local next = (Local)it.next();
    //System.out.println("next local: "+next);
    if ((next.getType() instanceof IntegerType) || (next.getType() instanceof LongType)){
      initMap.put(next, BOTTOM);
    }
  }

  Iterator boxIt = g.getBody().getUseAndDefBoxes().iterator();
  while (boxIt.hasNext()){
    Value val = ((ValueBox)boxIt.next()).getValue();
    if (val instanceof ArithmeticConstant) {
      initMap.put(val, getParity(initMap, val));
    }
  }
  if (Options.v().interactive_mode()){
    updateBeforeFilterMap();
  }
  
  return initMap;
}

代码示例来源:origin: ibinti/bugvm

protected Object newInitialFlow()
{
  HashMap<Value, String> initMap = new HashMap<Value, String>();

  Chain locals = g.getBody().getLocals();
  Iterator it = locals.iterator();
  while (it.hasNext()) {
    Local next = (Local)it.next();
    //System.out.println("next local: "+next);
    if ((next.getType() instanceof IntegerType) || (next.getType() instanceof LongType)){
      initMap.put(next, BOTTOM);
    }
  }

  Iterator boxIt = g.getBody().getUseAndDefBoxes().iterator();
  while (boxIt.hasNext()){
    Value val = ((ValueBox)boxIt.next()).getValue();
    if (val instanceof ArithmeticConstant) {
      initMap.put(val, getParity(initMap, val));
    }
  }
  if (Options.v().interactive_mode()){
    updateBeforeFilterMap();
  }
  
  return initMap;
}

代码示例来源:origin: ibinti/bugvm

if (Options.v().interactive_mode()){
  buildAfterFilterMap(s);
  updateAfterFilterMap(s);

代码示例来源:origin: ibinti/bugvm

protected void internalTransform(String phaseName, Map options){
  
  CGGOptions opts = new CGGOptions(options);
  if (opts.show_lib_meths()){
    setShowLibMeths(true);
  }
  cg = Scene.v().getCallGraph();
  if (Options.v().interactive_mode()){
    reset();
  }
}

代码示例来源:origin: com.bugvm/bugvm-soot

protected void internalTransform(String phaseName, Map options){
  
  CGGOptions opts = new CGGOptions(options);
  if (opts.show_lib_meths()){
    setShowLibMeths(true);
  }
  cg = Scene.v().getCallGraph();
  if (Options.v().interactive_mode()){
    reset();
  }
}

代码示例来源:origin: ibinti/bugvm

public void runPacks() {
  if (Options.v().src_prec() == Options.src_prec_class && Options.v().keep_line_number()){
    LineNumberAdder lineNumAdder = LineNumberAdder.v();
    lineNumAdder.internalTransform("", null);
  }
  
  retrieveAllBodies();
  
  if (Options.v().interactive_mode()){
    if (InteractionHandler.v().getInteractionListener() == null){
      G.v().out.println("Cannot run in interactive mode. No listeners available. Continuing in regular mode.");
      Options.v().set_interactive_mode(false);
    }
    else {
      G.v().out.println("Running in interactive mode.");
    }
  }
  
  runBodyPacks();
  handleInnerClasses();
}

代码示例来源:origin: com.bugvm/bugvm-soot

public void runPacks() {
  if (Options.v().src_prec() == Options.src_prec_class && Options.v().keep_line_number()){
    LineNumberAdder lineNumAdder = LineNumberAdder.v();
    lineNumAdder.internalTransform("", null);
  }
  
  retrieveAllBodies();
  
  if (Options.v().interactive_mode()){
    if (InteractionHandler.v().getInteractionListener() == null){
      G.v().out.println("Cannot run in interactive mode. No listeners available. Continuing in regular mode.");
      Options.v().set_interactive_mode(false);
    }
    else {
      G.v().out.println("Running in interactive mode.");
    }
  }
  
  runBodyPacks();
  handleInnerClasses();
}

相关文章