Java
import com.ibm.wala.shrikeCT.ClassReader;
String filePath = "path/to/your/classfile.class";
ClassReader reader = new ClassReader(filePath);
byte[] bytecode = reader.getBytecode();
ControlFlowGraph cfg = ShrikeCFG.make(bytecode);
Java
import com.ibm.wala.ipa.callgraph.AnalysisOptions;
import com.ibm.wala.ipa.callgraph.CallGraph;
import com.ibm.wala.ipa.callgraph.CallGraphBuilder;
import com.ibm.wala.ipa.callgraph.impl.Util;
import com.ibm.wala.ipa.cha.ClassHierarchy;
import com.ibm.wala.shrikeBT.IBinaryOpInstruction;
import com.ibm.wala.shrikeBT.IInstruction;
import com.ibm.wala.ssa.IR;
import com.ibm.wala.types.ClassLoaderReference;
import com.ibm.wala.util.config.AnalysisScopeReader;
AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope("path/to/your/classfile.class", null);
ClassHierarchy cha = ClassHierarchy.make(scope);
AnalysisOptions options = new AnalysisOptions();
CallGraphBuilder builder = Util.makeZeroCFABuilder(options, new AnalysisCache(), cha, scope, ClassLoaderReference.Primordial);
CallGraph cg = builder.makeCallGraph(options, null);
String methodName = "yourMethodName";
IR ir = cg.getIR(method);
DefUse defUse = new DefUse(ir);
for (SSAInstruction instruction : ir.getInstructions()) {
// ...
}