/**
* This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details.
*/
package edu.illinois.keshmesh.walaconfig;
import java.io.IOException;
import java.util.Collection;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaProject;
import com.ibm.wala.eclipse.cg.model.WalaProjectCGModel;
import com.ibm.wala.ipa.callgraph.AnalysisScope;
import com.ibm.wala.ipa.callgraph.CGNode;
import com.ibm.wala.ipa.callgraph.CallGraph;
import com.ibm.wala.ipa.callgraph.Entrypoint;
import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis;
import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.util.WalaException;
import com.ibm.wala.util.graph.InferGraphRoots;
public class KeshmeshCGModel extends WalaProjectCGModel {
public KeshmeshCGModel(IJavaProject project, String exclusionsFile, int objectSensitivityLevel) throws IOException, CoreException {
super(project, exclusionsFile);
engine = new EclipseProjectAnalysisEngine(project, objectSensitivityLevel);
engine.setExclusionsFile(exclusionsFile);
}
@Override
protected Iterable<Entrypoint> getEntrypoints(AnalysisScope analysisScope, IClassHierarchy classHierarchy) {
throw new UnsupportedOperationException();
}
@Override
protected Collection<CGNode> inferRoots(CallGraph cg) throws WalaException {
return InferGraphRoots.inferRoots(cg);
}
public PointerAnalysis getPointerAnalysis() {
return engine.getPointerAnalysis();
}
public IClassHierarchy getClassHierarchy() {
return engine.getClassHierarchy();
}
public Iterable<Entrypoint> getEntryPoints() {
return ((EclipseProjectAnalysisEngine) engine).getEntryPoints();
}
}