fix bug [ 1850456 ] error "I is null" when slicing

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2183 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
sjfink 2007-12-14 14:29:44 +00:00
parent 04b98cae44
commit 6fb624701f
2 changed files with 23 additions and 0 deletions

View File

@ -40,6 +40,7 @@ import com.ibm.wala.ipa.slicer.Slicer;
import com.ibm.wala.ipa.slicer.Statement;
import com.ibm.wala.ipa.slicer.Slicer.ControlDependenceOptions;
import com.ibm.wala.ipa.slicer.Slicer.DataDependenceOptions;
import com.ibm.wala.ipa.slicer.thin.ThinSlicer;
import com.ibm.wala.ssa.IR;
import com.ibm.wala.ssa.SSAAbstractThrowInstruction;
import com.ibm.wala.ssa.SSAArrayLoadInstruction;
@ -469,6 +470,27 @@ public class SlicerTest extends TestCase {
assertEquals(1, countThrows(slice));
assertEquals(1, countGetfields(slice));
}
public void testTestMessageFormat() throws ClassHierarchyException, IllegalArgumentException, CancelException {
AnalysisScope scope = CallGraphTestUtil.makeJ2SEAnalysisScope(TestConstants.WALA_TESTDATA, CallGraphTestUtil.REGRESSION_EXCLUSIONS);
ClassHierarchy cha = ClassHierarchy.make(scope);
Iterable<Entrypoint> entrypoints = com.ibm.wala.ipa.callgraph.impl.Util.makeMainEntrypoints(scope, cha,
TestConstants.SLICE_TESTMESSAGEFORMAT);
AnalysisOptions options = CallGraphTestUtil.makeAnalysisOptions(scope, entrypoints);
CallGraphBuilder builder = Util.makeZeroCFABuilder(options, new AnalysisCache(), cha, scope);
CallGraph cg = builder.makeCallGraph(options);
CGNode main = findMainMethod(cg);
Statement seed = new NormalStatement(main, 2);
System.err.println("Statement: " + seed);
// compute a backwards thin slice
ThinSlicer ts = new ThinSlicer(cg, builder.getPointerAnalysis());
Collection<Statement> slice = ts.computeBackwardThinSlice(seed);
dumpSlice(slice);
}
public static int countAllocations(Collection<Statement> slice) {
int count = 0;

View File

@ -52,6 +52,7 @@ public interface TestConstants {
public final static String SLICE_TEST_PRIM_GETTER_SETTER = "Lslice/TestPrimGetterSetter";
public final static String SLICE_TESTTHIN1 = "Lslice/TestThin1";
public final static String SLICE_TESTTHROWCATCH = "Lslice/TestThrowCatch";
public final static String SLICE_TESTMESSAGEFORMAT = "Lslice/TestMessageFormat";
}