public void testDynamicParam2() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccess.testDynamicParam2(ZLcfg/exc/intra/B;Lcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } }
@Test public void testParam() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccess.testParam(ZLcfg/exc/intra/B;Lcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NULL, returnState.getState(returnVal)); } }
@Test public void testWhile2() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccess.testWhile2(ZLcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } }
@Test public void testDynamicIf() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccessDynamic.testIf(ZLcfg/exc/intra/B;Lcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } }
@Test public void testDynamicWhile2() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccessDynamic.testWhile2(ZLcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } }
@Test public void testDynamicParam() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccessDynamic.testParam(ZLcfg/exc/intra/B;Lcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NULL, returnState.getState(returnVal)); } }
@Test public void testParam2() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccess.testParam2(ZLcfg/exc/intra/B;Lcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } }
@Test public void testIf() throws UnsoundGraphException, CancelException { MethodReference mr = StringStuff.makeMethodReference("cfg.exc.intra.FieldAccess.testIf(ZLcfg/exc/intra/B;Lcfg/exc/intra/B;)Lcfg/exc/intra/B"); IMethod m = cha.resolveMethod(mr); AnalysisCacheImpl cache = new AnalysisCacheImpl(); IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode); { ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> intraExplodedCFG = NullPointerAnalysis.createIntraproceduralExplodedCFGAnalysis(ir); intraExplodedCFG.compute(new NullProgressMonitor()); final IExplodedBasicBlock returnNodeExploded = returnNodeExploded(returnNode, intraExplodedCFG.getCFG()); final NullPointerState returnState = intraExplodedCFG.getState(returnNodeExploded); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } { ExceptionPruningAnalysis<SSAInstruction, ISSABasicBlock> intraSSACFG = NullPointerAnalysis.createIntraproceduralSSACFGAnalyis(ir); intraSSACFG.compute(new NullProgressMonitor()); Assert.assertEquals(ir.getControlFlowGraph().exit(), intraSSACFG.getCFG().exit()); Assert.assertEquals(returnNode, returnNode(intraSSACFG.getCFG())); final NullPointerState returnState = intraSSACFG.getState(returnNode); Assert.assertEquals(State.NOT_NULL, returnState.getState(returnVal)); } }
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);
IR ir = cache.getIR(m); final ISSABasicBlock returnNode = returnNode(ir.getControlFlowGraph()); final int returnVal = returnVal(returnNode);