Пример #1
0
        private string GenerateReport(string coverageFile)
        {
            try
            {
                var outputDirectory = _storageController.CreateReportDirectory();
                var arguments       = $"\"-reports:{coverageFile}\" \"-targetdir:{outputDirectory}\"";

                _reportProcess = new Process()
                {
                    StartInfo = new ProcessStartInfo(_runnerPath, arguments)
                    {
                        RedirectStandardOutput = true,
                        UseShellExecute        = false,
                        CreateNoWindow         = true
                    }
                };

                _reportProcess.OutputDataReceived += (o, e) =>
                {
                    if (e.Data == null)
                    {
                        return;
                    }
                    var text = e.Data;

                    OnLogAdded(text);
                };

                _reportProcess.Start();
                _reportProcess.BeginOutputReadLine();

                while (!_reportProcess.HasExited)
                {
                    _reportProcess.WaitForExit(1000);
                }

                if (_isAborting)
                {
                    _isAborting = false;
                    return(null);
                }

                var path = Path.Combine(outputDirectory, "index.htm");
                return(File.Exists(path) ? path : null);
            }
            catch
            {
                return(null);
            }
            finally
            {
                _reportProcess.Dispose();
                _reportProcess = null;
                _reportTask    = null;
            }
        }