示例#1
0
        public Task <PartialViewResult> GetInspectionResults(string code)
        {
            //Arrange
            var         builder = new MockVbeBuilder();
            VBComponent component;

            // ensure line endings are \r\n
            code = code.Replace("\r\n", "\n").Replace("\n", "\r\n");
            var vbe = builder.BuildFromSingleStandardModule(code, out component);

            var mockHost = new Mock <IHostApplication>();

            mockHost.SetupAllProperties();

            var parser = MockParser.Create(vbe.Object, _state);

            Task.Run(() => parser.Parse(new System.Threading.CancellationTokenSource())).Wait();
            if (parser.State.Status >= ParserState.Error)
            {
                throw new ArgumentException(parser.State.Status.ToString());
            }

            var results = _inspector.Inspect(parser.State);

            if (results.Any())
            {
                return(Task.FromResult(PartialView("~/Views/Home/InspectionResults.cshtml", results)));
            }

            return(Task.FromResult(PartialView("~/Views/Home/NoInspectionResults.cshtml", results)));
        }
        public Task <PartialViewResult> GetInspectionResults(string code)
        {
            //Arrange
            var builder = new MockVbeBuilder();

            // ensure line endings are \r\n
            code = code.Replace("\r\n", "\n").Replace("\n", "\r\n");
            var vbe = builder.ProjectBuilder("WebInspector", ProjectProtection.Unprotected)

                      .AddReference("VBA", MockVbeBuilder.LibraryPathVBA, 4, 1, true)
                      .AddReference("Excel", MockVbeBuilder.LibraryPathMsExcel, 1, 7, true)
                      .AddReference("Office", MockVbeBuilder.LibraryPathMsOffice, 2, 5, true)
                      .AddReference("Scripting", MockVbeBuilder.LibraryPathScripting, 1, 0, true)

                      .AddComponent("WebModule", ComponentType.StandardModule, code)
                      .MockVbeBuilder().Build();
            var mockHost = new Mock <IHostApplication>();

            mockHost.SetupGet(m => m.ApplicationName).Returns("Excel");
            vbe.Setup(m => m.HostApplication()).Returns(() => mockHost.Object);

            var path   = Server.MapPath("~/Declarations");
            var parser = MockParser.Create(vbe.Object, _state, path);

            parser.State.AddTestLibrary(path + "/VBA.4.2.xml");
            parser.State.AddTestLibrary(path + "/Excel.1.8.xml");
            parser.State.AddTestLibrary(path + "/Office.2.7.xml");
            parser.State.AddTestLibrary(path + "/Scripting.1.0.xml");

            try
            {
                Task.Run(() => parser.Parse(new CancellationTokenSource())).Wait();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            if (parser.State.Status >= ParserState.Error)
            {
                return(Task.FromResult(PartialView("InspectionResults", null)));
            }

            var results = _inspector.Inspect(parser.State);

            // strip away module & project naming suggestions, they don't make sense in the web UI
            //results.RemoveAll(ir => ir.Inspection is UseMeaningfulNameInspection
            //            && (ir.QualifiedSelection.QualifiedName.Name == "TestProject1." || ir.QualifiedSelection.QualifiedName.Name == "TestProject1.TestModule1");

            return(Task.FromResult(PartialView("InspectionResults", results)));
        }