当前位置: 首页>>代码示例>>Java>>正文


Java JimpleBasedInterproceduralCFG类代码示例

本文整理汇总了Java中soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG的典型用法代码示例。如果您正苦于以下问题:Java JimpleBasedInterproceduralCFG类的具体用法?Java JimpleBasedInterproceduralCFG怎么用?Java JimpleBasedInterproceduralCFG使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


JimpleBasedInterproceduralCFG类属于soot.jimple.toolkits.ide.icfg包,在下文中一共展示了JimpleBasedInterproceduralCFG类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: main

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
/**
 * @param args
 */
public static void main(String[] args) {
	
	
	PackManager.v().getPack("wjtp").add(new Transform("wjtp.ifds", new SceneTransformer() {
		protected void internalTransform(String phaseName, @SuppressWarnings("rawtypes") Map options) {

			IFDSTabulationProblem<Unit,?,SootMethod,InterproceduralCFG<Unit,SootMethod>> problem = new IFDSPossibleTypes(new JimpleBasedInterproceduralCFG());
			
			@SuppressWarnings({ "rawtypes", "unchecked" })
			JimpleIFDSSolver<?,InterproceduralCFG<Unit,SootMethod>> solver = new JimpleIFDSSolver(problem);
			solver.solve();
		}
	}));
	
	soot.Main.main(args);
}
 
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:20,代码来源:Main.java

示例2: makeICFG

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
private static BiDiInterproceduralCFG<Unit, SootMethod> makeICFG(AnalysisDirection direction) {
	JimpleBasedInterproceduralCFG fwdIcfg = new JimpleBasedInterproceduralCFG();
	if (direction == AnalysisDirection.FORWARDS)
		return fwdIcfg;
	else
		return new BackwardsInterproceduralCFG(fwdIcfg);
}
 
开发者ID:johanneslerch,项目名称:FlowTwist,代码行数:8,代码来源:TabulationProblem.java

示例3: InfoflowCFG

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
public InfoflowCFG() {
	this(new JimpleBasedInterproceduralCFG());
}
 
开发者ID:themaplelab,项目名称:boomerang,代码行数:4,代码来源:InfoflowCFG.java

示例4: notifyMethodChanged

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
@Override
public void notifyMethodChanged(SootMethod m) {
	if (delegate instanceof JimpleBasedInterproceduralCFG)
		((JimpleBasedInterproceduralCFG) delegate).initializeUnitToOwner(m);
}
 
开发者ID:themaplelab,项目名称:boomerang,代码行数:6,代码来源:InfoflowCFG.java

示例5: PropagationProblem

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
public PropagationProblem(JimpleBasedInterproceduralCFG icfg) {
  super(icfg);
  this.icfg = icfg;
}
 
开发者ID:serval-snt-uni-lu,项目名称:DroidRA,代码行数:5,代码来源:PropagationProblem.java

示例6: internalTransform

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
@Override
protected void internalTransform(String phaseName, @SuppressWarnings("rawtypes") Map options) {
  PropagationTimers.v().totalTimer.start();
  PropagationTimers.v().misc.start();
  StringValueAnalysis.initialize();

  JimpleBasedInterproceduralCFG iCfg = new PropagationIcfg();
  AnalysisParameters.v().setIcfg(iCfg);
  PropagationProblem problem = new PropagationProblem(iCfg);
  for (SootMethod ep : Scene.v().getEntryPoints()) {
    if (ep.isConcrete()) {
      problem.getInitialSeeds().add(ep.getActiveBody().getUnits().getFirst());
    }
  }

  int iterationCounter = 0;
  PropagationSolver solver = null;

  while (iterationCounter < MAX_ITERATIONS) {
    IterationSolver.v().initialize(solver);
    PropagationTimers.v().misc.end();

    PropagationTimers.v().problemGeneration.start();
    solver = new PropagationSolver(problem);
    PropagationTimers.v().problemGeneration.end();

    PropagationTimers.v().ideSolution.start();
    logger.info("Solving propagation problem (iteration " + iterationCounter + ")");
    solver.solve();
    PropagationTimers.v().ideSolution.end();

    PropagationTimers.v().misc.start();
    if (!AnalysisParameters.v().isIterative() || IterationSolver.v().hasFoundFixedPoint()) {
      iterationCounter = MAX_ITERATIONS;
    } else {
      ++iterationCounter;
    }
  }
  PropagationTimers.v().misc.end();

  logger.info("Reached a fixed point");

  Results.addResult(resultBuilder.buildResult(solver));

  PropagationTimers.v().totalTimer.end();

  if (logger.isDebugEnabled()) {
    CallGraph cg = Scene.v().getCallGraph();

    Iterator<Edge> it = cg.listener();
    while (it.hasNext()) {
      soot.jimple.toolkits.callgraph.Edge e = (soot.jimple.toolkits.callgraph.Edge) it.next();
      logger.debug("" + e.src() + e.srcStmt() + " =" + e.kind() + "=> " + e.tgt());
    }

    if (printer != null) {
      printer.print(solver);
    }
  }
}
 
开发者ID:serval-snt-uni-lu,项目名称:DroidRA,代码行数:61,代码来源:PropagationSceneTransformer.java

示例7: computeResults

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
private Set<Pair<Value, Set<DefinitionStmt>>> computeResults(final String codeDir) {
//		extractVersion(codeDir);
		
		soot.G.reset();
 		final Set<Pair<Value, Set<DefinitionStmt>>> results = new HashSet<Pair<Value, Set<DefinitionStmt>>>();
 
		PackManager.v().getPack("wjtp").add(new Transform("wjtp.ifds", new SceneTransformer() {
			protected void internalTransform(String phaseName, @SuppressWarnings("rawtypes") Map options) {
//				Scene.v().getSootClass(className).setApplicationClass();
				System.out.println("Running IFDS on initial CFG...");
				
				long nanoBeforeCFG = System.nanoTime();
				InterproceduralCFG<Unit, SootMethod> icfg = new JimpleBasedInterproceduralCFG();
				System.out.println("ICFG created in " + (System.nanoTime() - nanoBeforeCFG) / 1E9 + " seconds.");

				IFDSTabulationProblem<Unit, Pair<Value, Set<DefinitionStmt>>, SootMethod,
							InterproceduralCFG<Unit, SootMethod>> problem =
					new IFDSReachingDefinitions(icfg);
				IFDSSolver<Unit,Pair<Value, Set<DefinitionStmt>>,SootMethod,
							InterproceduralCFG<Unit,SootMethod>> solver =
					new IFDSSolver<Unit,Pair<Value, Set<DefinitionStmt>>,SootMethod,
							InterproceduralCFG<Unit,SootMethod>>(problem);	

				long beforeSolver = System.nanoTime();
				System.out.println("Running solver...");
				solver.solve();
				System.out.println("Solver done in " + ((System.nanoTime() - beforeSolver) / 1E9) + " seconds.");
				
				SootMethod meth = Scene.v().getMainClass().getMethodByName("runMainAndExit"); 
				Unit ret = meth.getActiveBody().getUnits().getPredOf(meth.getActiveBody().getUnits().getLast());
				results.addAll(solver.ifdsResultsAt(ret));
			}
		}));

		final String sootcp = codeDir + File.separator + "bin" + File.pathSeparator
				+ JUNIT_DIR + "/lib/hamcrest-core-1.3.jar" + File.pathSeparator
				+ "/usr/lib/jvm/java-6-sun/jre/lib/rt.jar" + File.pathSeparator
				+ "/usr/lib/jvm/java-6-sun/jre/lib/jce.jar" + File.pathSeparator
				+ "C:\\Program Files\\Java\\jre7\\lib\\rt.jar" + File.pathSeparator
				+ "C:\\Program Files\\Java\\jre7\\lib\\jce.jar";
		System.out.println("Soot classpath: " + sootcp);
		
		soot.Main.v().run(new String[] {
				"-W",
				"-main-class", CLASS_NAME,
				"-process-path", codeDir + File.separator + "bin",
				"-src-prec", "java",
//				"-pp",
				"-cp", sootcp,
//				"-no-bodies-for-excluded",
//				"-exclude", "java",
//				"-exclude", "javax",
				"-output-format", "none",
				"-p", "jb", "use-original-names:true",
				"-p", "cg.spark", "on",
//				"-p", "cg.spark", "verbose:true",
				CLASS_NAME } );
		return results;
	}
 
开发者ID:StevenArzt,项目名称:reviser,代码行数:60,代码来源:IFDSReachingDefinitionsJUnitCommits.java

示例8: computeResults

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
private Set<Pair<Value, Set<DefinitionStmt>>> computeResults(final String codeDir) {
//		extractVersion(codeDir);
		
		soot.G.reset();
 		final Set<Pair<Value, Set<DefinitionStmt>>> results = new HashSet<Pair<Value, Set<DefinitionStmt>>>();
 
		PackManager.v().getPack("wjtp").add(new Transform("wjtp.ifds", new SceneTransformer() {
			protected void internalTransform(String phaseName, @SuppressWarnings("rawtypes") Map options) {
//				Scene.v().getSootClass(className).setApplicationClass();
				System.out.println("Running IFDS on initial CFG...");
				
				long nanoBeforeCFG = System.nanoTime();
				InterproceduralCFG<Unit, SootMethod> icfg = new JimpleBasedInterproceduralCFG();
				System.out.println("ICFG created in " + (System.nanoTime() - nanoBeforeCFG) / 1E9 + " seconds.");

				IFDSTabulationProblem<Unit, Pair<Value, Set<DefinitionStmt>>, SootMethod,
							InterproceduralCFG<Unit, SootMethod>> problem =
					new IFDSReachingDefinitions(icfg);
				IFDSSolver<Unit,Pair<Value, Set<DefinitionStmt>>,SootMethod,
							InterproceduralCFG<Unit,SootMethod>> solver =
					new IFDSSolver<Unit,Pair<Value, Set<DefinitionStmt>>,SootMethod,
							InterproceduralCFG<Unit,SootMethod>>(problem);	

				long beforeSolver = System.nanoTime();
				System.out.println("Running solver...");
				solver.solve();
				System.out.println("Solver done in " + ((System.nanoTime() - beforeSolver) / 1E9) + " seconds.");
				
				SootMethod meth = Scene.v().getMainClass().getMethodByName("main"); 
				Unit ret = meth.getActiveBody().getUnits().getPredOf(meth.getActiveBody().getUnits().getLast());
				results.addAll(solver.ifdsResultsAt(ret));
			}
		}));

		final String sootcp = codeDir + File.separator + "bin" + File.pathSeparator
				+ JUNIT_DIR + "/lib/hamcrest-core-1.3.jar" + File.pathSeparator
				+ "/usr/lib/jvm/java-6-sun/jre/lib/rt.jar" + File.pathSeparator
				+ "/usr/lib/jvm/java-6-sun/jre/lib/jce.jar" + File.pathSeparator
				+ "C:\\Program Files\\Java\\jre7\\lib\\rt.jar" + File.pathSeparator
				+ "C:\\Program Files\\Java\\jre7\\lib\\jce.jar";
		System.out.println("Soot classpath: " + sootcp);
		
		soot.Main.v().run(new String[] {
				"-W",
				"-main-class", CLASS_NAME,
				"-process-path", codeDir + File.separator + "classes",
				"-src-prec", "java",
//				"-pp",
				"-cp", sootcp,
				"-no-bodies-for-excluded",
				"-exclude", "java",
				"-exclude", "javax",
				"-output-format", "none",
				"-p", "jb", "use-original-names:true",
				"-p", "cg.spark", "on",
//				"-p", "cg.spark", "verbose:true",
				CLASS_NAME } );
		return results;
	}
 
开发者ID:StevenArzt,项目名称:reviser,代码行数:60,代码来源:IFDSReachingDefinitionsAbcCommits.java

示例9: computeResults

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
private Set<Local> computeResults(final String codeDir) {
//		extractVersion(codeDir);
		
		soot.G.reset();
 		final Set<Local> results = new HashSet<Local>();
 
		PackManager.v().getPack("wjtp").add(new Transform("wjtp.ifds", new SceneTransformer() {
			protected void internalTransform(String phaseName, @SuppressWarnings("rawtypes") Map options) {
//				Scene.v().getSootClass(className).setApplicationClass();
				System.out.println("Running IFDS on initial CFG...");
				
				long nanoBeforeCFG = System.nanoTime();
				InterproceduralCFG<Unit, SootMethod> icfg = new JimpleBasedInterproceduralCFG();
				System.out.println("ICFG created in " + (System.nanoTime() - nanoBeforeCFG) / 1E9 + " seconds.");

				IFDSTabulationProblem<Unit, Local, SootMethod, InterproceduralCFG<Unit, SootMethod>> problem =
					new IFDSUninitializedVariables(icfg);
				IFDSSolver<Unit,Local,SootMethod,InterproceduralCFG<Unit,SootMethod>> solver =
					new IFDSSolver<Unit,Local,SootMethod,InterproceduralCFG<Unit,SootMethod>>(problem);	

				long beforeSolver = System.nanoTime();
				System.out.println("Running solver...");
				solver.solve();
				System.out.println("Solver done in " + ((System.nanoTime() - beforeSolver) / 1E9) + " seconds.");
				
				SootMethod meth = Scene.v().getMainClass().getMethodByName("runMainAndExit"); 
				Unit ret = meth.getActiveBody().getUnits().getPredOf(meth.getActiveBody().getUnits().getLast());
				results.addAll(solver.ifdsResultsAt(ret));
			}
		}));

		final String sootcp = codeDir + File.pathSeparator
				+ JUNIT_DIR + "/hamcrest-core-1.3.jar" + File.pathSeparator
				+ "/usr/lib/jvm/java-6-sun/jre/lib/rt.jar" + File.pathSeparator
				+ "/usr/lib/jvm/java-6-sun/jre/lib/jce.jar" + File.pathSeparator
				+ "C:\\Program Files\\Java\\jre7\\lib\\rt.jar" + File.pathSeparator
				+ "C:\\Program Files\\Java\\jre7\\lib\\jce.jar";
		System.out.println("Soot classpath: " + sootcp);
		
		soot.Main.v().run(new String[] {
				"-W",
				"-main-class", CLASS_NAME,
				"-process-path", codeDir,
				"-src-prec", "java",
//				"-pp",
				"-cp", sootcp,
//				"-no-bodies-for-excluded",
//				"-exclude", "java",
//				"-exclude", "javax",
				"-output-format", "none",
				"-p", "jb", "use-original-names:true",
				"-p", "cg.spark", "on",
//				"-p", "cg.spark", "verbose:true",
				CLASS_NAME } );
		return results;
	}
 
开发者ID:StevenArzt,项目名称:reviser,代码行数:57,代码来源:IFDSUninitializedVariablesJUnit.java

示例10: setIcfg

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
/**
 * Sets the interprocedural control flow graph for the analysis.
 * 
 * @param icfg The interprocedural CFG.
 */
public void setIcfg(JimpleBasedInterproceduralCFG icfg) {
  this.icfg = icfg;
}
 
开发者ID:serval-snt-uni-lu,项目名称:DroidRA,代码行数:9,代码来源:AnalysisParameters.java

示例11: getIcfg

import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG; //导入依赖的package包/类
/**
 * Gets the interprocedural control flow graph for the analysis.
 * 
 * @return The interprocedural control flow graph.
 */
public JimpleBasedInterproceduralCFG getIcfg() {
  return icfg;
}
 
开发者ID:serval-snt-uni-lu,项目名称:DroidRA,代码行数:9,代码来源:AnalysisParameters.java


注:本文中的soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。