//--------------------------------------------------------------------- public Task RunCodeCoverageAsync(MainSettings settings) { var basicSettings = settings.BasicSettings; var fileName = GetOpenCppCoveragePath(basicSettings.ProgramToRun); var arguments = OpenCppCoverageCmdLine.Build(settings); this.outputWindowWriter.WriteLine("Run:"); this.outputWindowWriter.WriteLine(string.Format(@"""{0}"" {1}", fileName, arguments)); // Run in a new thread to not block UI thread. return(Task.Run(() => { using (var process = new Process()) { var startInfo = process.StartInfo; startInfo.FileName = fileName; startInfo.Arguments = arguments; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = false; foreach (var environment in basicSettings.EnvironmentVariables) { startInfo.EnvironmentVariables.Add(environment.Key, environment.Value); } if (!String.IsNullOrEmpty(basicSettings.WorkingDirectory)) { startInfo.WorkingDirectory = basicSettings.WorkingDirectory; } process.Start(); process.WaitForExit(); } })); }
//--------------------------------------------------------------------- public OpenCppCoverageRunner( OutputWindowWriter outputWindowWriter, OpenCppCoverageCmdLine openCppCoverageCmdLine) { this.outputWindowWriter = outputWindowWriter; this.openCppCoverageCmdLine = openCppCoverageCmdLine; }
//--------------------------------------------------------------------- void RunCommand( Action <MainWindowsManager> action) { IVsUIShell uiShell = (IVsUIShell)serviceProvider.GetService(typeof(SVsUIShell)); var errorHandler = new ErrorHandler(uiShell); errorHandler.Execute(() => { var dte = (DTE2)serviceProvider.GetService(typeof(EnvDTE.DTE)); var outputWindow = (IVsOutputWindow)serviceProvider.GetService(typeof(SVsOutputWindow)); var outputWriter = new OutputWindowWriter(dte, outputWindow); errorHandler.OutputWriter = outputWriter; var coverageViewManager = GetCoverageViewManager(serviceProvider); var coverageTreeManager = new CoverageTreeManager(windowFinder); var projectBuilder = new ProjectBuilder(dte, errorHandler, outputWriter); var deserializer = new CoverageDataDeserializer(); var openCppCoverageCmdLine = new OpenCppCoverageCmdLine(this.configFile); var openCppCoverageRunner = new OpenCppCoverageRunner(outputWriter, openCppCoverageCmdLine); var coverageRunner = new CoverageRunner( dte, outputWriter, coverageTreeManager, projectBuilder, coverageViewManager, deserializer, errorHandler, openCppCoverageRunner); var configurationManager = new ConfigurationManager(); var settingsBuilder = new StartUpProjectSettingsBuilder(dte, configurationManager); var mainSettingController = new MainSettingController( new SettingsStorage(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)), openCppCoverageCmdLine, settingsBuilder, coverageRunner); var mainWindowsManager = new MainWindowsManager(windowFinder, mainSettingController); action(mainWindowsManager); }); }