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


Java JAssignStmt.getRightOp方法代码示例

本文整理汇总了Java中soot.jimple.internal.JAssignStmt.getRightOp方法的典型用法代码示例。如果您正苦于以下问题:Java JAssignStmt.getRightOp方法的具体用法?Java JAssignStmt.getRightOp怎么用?Java JAssignStmt.getRightOp使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在soot.jimple.internal.JAssignStmt的用法示例。


在下文中一共展示了JAssignStmt.getRightOp方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: readKeysFromTag

import soot.jimple.internal.JAssignStmt; //导入方法依赖的package包/类
private ArrayList<String> readKeysFromTag(Stmt stmt, Value arg) {
	ArrayList<String> reachingDef = new ArrayList<String>();
	// Value putStringArg = bundleLoc.getValue();
	StringConstant strVal = StringConstant.v("dummy");
		
	if (arg instanceof StringConstant){
		strVal = (StringConstant) arg;
		reachingDef.add(strVal.value);
	} else {
		// otherwise we have to ask for reaching def.
		for (Tag tagEntity : stmt.getTags()) {
			if(!(tagEntity instanceof LinkTag)) continue; 
			LinkTag ttg = (LinkTag) tagEntity;
			if ( !(ttg.getLink() instanceof JAssignStmt)) continue;
			JAssignStmt asst = (JAssignStmt) ttg.getLink();
				
			// FIXME:can not deal with inter-proc now!
			if (asst.getLeftOp().equals(arg)) {
				// assert (asst.getRightOp() instanceof StringConstant);
				if (asst.getRightOp() instanceof StringConstant) {
					strVal = (StringConstant) asst.getRightOp();
					String bundleKey = strVal.value;
					bundleKey = bundleKey.replaceAll("[\\s]+", "_");
					reachingDef.add(bundleKey);			
				} else { //may be function call or private field from inter-proc.
					//reportUnknownRegister(stmt, arg);
                       _tmp_reportUnknownRegisterDynInfo(stmt, arg, 2);
				}
			} 
		}
	}

	return reachingDef;
}
 
开发者ID:petablox-project,项目名称:petablox,代码行数:35,代码来源:InterComponentInstrument.java

示例2: lookforTgtArgToInject

import soot.jimple.internal.JAssignStmt; //导入方法依赖的package包/类
private void lookforTgtArgToInject(Chain<Unit> units, Stmt stmt, Value arg) {
	
	String tgtComptName = "";
	ClassConstant clazz = ClassConstant.v("dummy");
	StringConstant strCont = StringConstant.v("dummy");
	InvokeExpr ie = stmt.getInvokeExpr();
	
	if (arg instanceof ClassConstant) {
		clazz = (ClassConstant) arg;
		tgtComptName = clazz.value;
	} else if (arg instanceof StringConstant) {
		strCont = (StringConstant) arg;
		tgtComptName = strCont.value;
	}else {// FIXME: too ugly to grab result in this way
		//otherwise we have to ask for reaching def.
		for (Tag tagEntity : stmt.getTags()) {
			// String tagStr = arg.toString();
			if(!(tagEntity instanceof LinkTag)) continue; 
			LinkTag ttg = (LinkTag) tagEntity;
			if ( !(ttg.getLink() instanceof JAssignStmt)) continue;
			JAssignStmt asst = (JAssignStmt) ttg.getLink();
			if (asst.getLeftOp().equals(arg)) {
				// assert (asst.getRightOp() instanceof ClassConstant);
				if (asst.getRightOp() instanceof ClassConstant) {
					clazz = (ClassConstant) asst.getRightOp();		
					tgtComptName = clazz.value;	
				} else if (asst.getRightOp() instanceof StringConstant) {
					strCont = (StringConstant) asst.getRightOp();
					tgtComptName = strCont.value;
				}

			}
		}

	}
	
	if (tgtComptName.equals("")) {
		// System.out.println("Can we do better.........** query dynamic analysis.");
		// 		    List<ParamInfo> paramList =  queryArgumentValues(SootMethod caller, stmt, int argNum);
		// for(ParamInfo info : paramList) {
		// 	System.out.println("Analysis result......" + info);
		// }
		//reportUnknownRegister(stmt, arg);
           _tmp_reportUnknownRegisterDynInfo(stmt, arg, 2);
		return;
	}
	
	tgtComptName = tgtComptName.replace(File.separatorChar, '.');
	///Check whether exist such class.
	if ( !Scene.v().containsClass(tgtComptName)) {
           //reportUnknownRegister(stmt, arg);
           _tmp_reportUnknownRegisterDynInfo(stmt, arg, 2);
		return;
	}
			
	this.instruTgtCompt(tgtComptName);
	
	//begin to instument current invoke method of src.		
	JimpleLocalBox localBox = (JimpleLocalBox) ie
		.getUseBoxes().get(0);
	SootMethod toCall = Scene.v().getMethod(
		"<" + tgtComptName + ": void set_Intent("
			+ intentClass + ")>");
	Stmt invokeSetter = Jimple.v().newInvokeStmt(
		Jimple.v().newStaticInvokeExpr(
			toCall.makeRef(), localBox.getValue()));
	units.insertAfter(invokeSetter, stmt);
}
 
开发者ID:petablox-project,项目名称:petablox,代码行数:69,代码来源:InterComponentInstrument.java


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