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))); }