示例#1
0
        private CheckResults Analyze()
        {
            if (this.options.Assembly == null)
            {
                return(CheckResults.Error("No assembly given to check"));
            }

            DebugOptions.Debug = this.options.ShowDebug;

            this.analyzers = new Dictionary <string, IMethodAnalysis> {
                { "non-null", new NonNullAnalysisFacade() }
            };
            this.analysis_driver = new CodeContractsAnalysisDriver <IMethodResult <SymbolicValue> > (
                new BasicAnalysisDriver(MetaDataProvider.Instance, CodeContractDecoder.Instance));

            return(AnalyzeAssembly(this.options.Assembly));
        }
示例#2
0
        private CheckResults AnalyzeAssembly(string assemblyPath)
        {
            IMetaDataProvider metadataDecoder = this.analysis_driver.MetaDataProvider;
            AssemblyNode      assembly;
            string            reason;

            if (!metadataDecoder.TryLoadAssembly(assemblyPath, out assembly, out reason))
            {
                return(CheckResults.Error(string.Format("Cannot load assembly: {0}", reason)));
            }

            var proofResults = new Dictionary <string, ICollection <string> > ();

            foreach (Method method in metadataDecoder.Methods(assembly))
            {
                AnalyzeMethod(method, proofResults);
            }
            if (proofResults.Count == 0)
            {
                return(CheckResults.Error("No methods found."));
            }

            return(new CheckResults(null, null, proofResults));
        }