Exemple #1
0
        private ComposedFactQuery <Variable> CreateFactQuery <Variable> (Predicate <APC> isUnreachable, IEnumerable <IMethodResult <Variable> > results)
        {
            var res = new ComposedFactQuery <Variable> (isUnreachable);

            res.Add(new ConstantPropagationFactQuery <Variable> ());
            foreach (var methodResult in results)
            {
                res.Add(methodResult.FactQuery);
            }
            return(res);
        }
Exemple #2
0
        private void AnalyzeMethodInternal(Method method, List <string> proofResults)
        {
            string fullMethodName = method.FullName;
            IMethodDriver <LabeledSymbol <APC, SymbolicValue>, SymbolicValue> methodDriver = this.analysis_driver.CreateMethodDriver(method);

            methodDriver.RunHeapAndExpressionAnalyses();

            var results = new List <IMethodResult <SymbolicValue> > (this.analyzers.Values.Count);

            foreach (IMethodAnalysis analysis in this.analyzers.Values)
            {
                IMethodResult <SymbolicValue> result = analysis.Analyze(fullMethodName, methodDriver);
                results.Add(result);
            }

            ComposedFactQuery <SymbolicValue> facts = CreateFactQuery(methodDriver.BasicFacts.IsUnreachable, results);

            foreach (var methodResult in results)
            {
                methodResult.ValidateImplicitAssertions(facts, proofResults);
            }

            AssertionFinder.ValidateAssertions(facts, methodDriver, proofResults);
        }