コード例 #1
0
        public OutputController(IReportConfiguration configuration, IMessageSink diagnosticMessageSink)
        {
            _configuration         = configuration;
            _diagnosticMessageSink = diagnosticMessageSink;

            IReportWriter writer;

            if (!configuration.WriteOutput)
            {
                _diagnosticMessageSink.OnMessage(new DiagnosticMessage("Output is disabled"));
                writer = new NullWriter();
            }
            else
            {
                _diagnosticMessageSink.OnMessage(new DiagnosticMessage($"Creating report at {configuration.XmlReportFile}"));
                _fileStream = new FileStream(configuration.XmlReportFile, FileMode.Create, FileAccess.Write,
                                             FileShare.None, 4096, true);

                _sw = new StreamWriter(_fileStream);

                XmlWriterSettings xws = new XmlWriterSettings();
                xws.Async = true;
                _xw       = XmlWriter.Create(_sw, xws);

                writer = new ReportWriter(_xw);
            }
            Report = new ScenarioReport(configuration.AssemblyName, writer, _diagnosticMessageSink);
        }
コード例 #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HtmlReportBuilderReportContext"/> class.
 /// </summary>
 /// <param name="reportConfiguration">The configuration options.</param>
 /// <param name="settings">The settings.</param>
 /// <param name="riskHotspotAnalysisResult">The risk hotspot analysis result.</param>
 /// <param name="overallHistoricCoverages">The historic coverage elements.</param>
 public HtmlReportBuilderReportContext(IReportConfiguration reportConfiguration, Settings settings, RiskHotspotAnalysisResult riskHotspotAnalysisResult, IReadOnlyCollection <HistoricCoverage> overallHistoricCoverages)
 {
     this.ReportConfiguration       = reportConfiguration;
     this.Settings                  = settings;
     this.RiskHotspotAnalysisResult = riskHotspotAnalysisResult;
     this.OverallHistoricCoverages  = overallHistoricCoverages;
 }
コード例 #3
0
        /// <summary>
        /// Executes the report generation.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <param name="parserResult">The parser result generated by <see cref="CoverageReportParser"/>.</param>
        public void GenerateReport(
            IReportConfiguration reportConfiguration,
            ParserResult parserResult)
        {
            if (reportConfiguration == null)
            {
                throw new ArgumentNullException(nameof(reportConfiguration));
            }

            if (parserResult == null)
            {
                throw new ArgumentNullException(nameof(parserResult));
            }

            var configuration = this.GetConfiguration();

            var settings = new Settings();

            configuration.GetSection("settings").Bind(settings);

            var riskHotspotsAnalysisThresholds = new RiskHotspotsAnalysisThresholds();

            configuration.GetSection("riskHotspotsAnalysisThresholds").Bind(riskHotspotsAnalysisThresholds);

            this.GenerateReport(reportConfiguration, settings, riskHotspotsAnalysisThresholds, parserResult);
        }
コード例 #4
0
        /// <summary>
        /// Generates a report using given configuration.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns>
        public bool GenerateReport(IReportConfiguration reportConfiguration)
        {
            if (reportConfiguration == null)
            {
                throw new ArgumentNullException(nameof(reportConfiguration));
            }

            try
            {
                var configuration = this.GetConfiguration();

                var settings = new Settings();
                configuration.GetSection("settings").Bind(settings);

                var riskHotspotsAnalysisThresholds = new RiskHotspotsAnalysisThresholds();
                configuration.GetSection("riskHotspotsAnalysisThresholds").Bind(riskHotspotsAnalysisThresholds);

                return(this.GenerateReport(reportConfiguration, settings, riskHotspotsAnalysisThresholds));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.GetExceptionMessageForDisplay());
                Logger.Error(ex.StackTrace);

#if DEBUG
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    Console.ReadKey();
                }
#endif

                return(false);
            }
        }
コード例 #5
0
        /// <summary>
        /// Executes the report generation.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="riskHotspotsAnalysisThresholds">The risk hotspots analysis thresholds.</param>
        /// <param name="parserResult">The parser result generated by <see cref="CoverageReportParser"/>.</param>
        public void GenerateReport(
            IReportConfiguration reportConfiguration,
            Settings settings,
            RiskHotspotsAnalysisThresholds riskHotspotsAnalysisThresholds,
            ParserResult parserResult)
        {
            if (reportConfiguration == null)
            {
                throw new ArgumentNullException(nameof(reportConfiguration));
            }

            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            if (riskHotspotsAnalysisThresholds == null)
            {
                throw new ArgumentNullException(nameof(riskHotspotsAnalysisThresholds));
            }

            if (parserResult == null)
            {
                throw new ArgumentNullException(nameof(parserResult));
            }

            var reportContext = new ReportContext(reportConfiguration, settings);

            var pluginLoader = new ReflectionPluginLoader(reportConfiguration.Plugins);
            IReportBuilderFactory reportBuilderFactory = new ReportBuilderFactory(pluginLoader);

            reportContext.RiskHotspotAnalysisResult = new RiskHotspotsAnalyzer(riskHotspotsAnalysisThresholds, settings.DisableRiskHotspots)
                                                      .PerformRiskHotspotAnalysis(parserResult.Assemblies);

            var overallHistoricCoverages = new List <Parser.Analysis.HistoricCoverage>();
            var historyStorage           = new HistoryStorageFactory(pluginLoader).GetHistoryStorage(reportConfiguration);

            if (historyStorage != null)
            {
                new HistoryParser(historyStorage, settings.MaximumNumberOfHistoricCoverageFiles, settings.NumberOfReportsParsedInParallel)
                .ApplyHistoricCoverage(parserResult.Assemblies, overallHistoricCoverages);

                reportContext.OverallHistoricCoverages = overallHistoricCoverages;
            }

            DateTime executionTime = DateTime.Now;

            new Reporting.ReportGenerator(
                new CachingFileReader(new LocalFileReader(reportConfiguration.SourceDirectories), settings.CachingDurationOfRemoteFilesInMinutes),
                parserResult,
                reportBuilderFactory.GetReportBuilders(reportContext))
            .CreateReport(reportConfiguration.HistoryDirectory != null, overallHistoricCoverages, executionTime, reportConfiguration.Tag);

            if (historyStorage != null)
            {
                new HistoryReportGenerator(historyStorage)
                .CreateReport(parserResult.Assemblies, executionTime, reportConfiguration.Tag);
            }
        }
コード例 #6
0
 public SolicitudTask(IDataHandler datahandler, IReportHandler reporthandler, IEmailHandler emailhandler, IReportConfiguration reportconfiguration, SearchCriteria filter)
 {
     _datahandler         = datahandler;
     _reporthandler       = reporthandler;
     _emailhandler        = emailhandler;
     _reportconfiguration = reportconfiguration;
     _filtercriteria      = filter;
 }
コード例 #7
0
        public TextReportWriter(IReportConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            _configuration = configuration;
        }
コード例 #8
0
        /// <summary>
        /// Gets the report builders that correspond to the given <paramref name="reportConfiguration" />.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <returns>
        /// The report builders.
        /// </returns>
        public IEnumerable <IReportBuilder> GetReportBuilders(IReportConfiguration reportConfiguration)
        {
            Logger.InfoFormat(Resources.InitializingReportBuilders, string.Join(", ", reportConfiguration.ReportTypes));

            var reportBuilders = MefHelper.LoadInstancesOfType <IReportBuilder>()
                                 .Where(r => reportConfiguration.ReportTypes.Contains(r.ReportType, StringComparer.OrdinalIgnoreCase))
                                 .OrderBy(r => r.ReportType)
                                 .ToArray();

            var result = new List <IReportBuilder>();

            foreach (var reportBuilderGroup in reportBuilders.GroupBy(r => r.ReportType))
            {
                if (reportBuilderGroup.Count() == 1)
                {
                    result.Add(reportBuilderGroup.First());
                }
                else
                {
                    var nonDefaultParsers = reportBuilderGroup
                                            .Where(r => r.GetType().Assembly.GetName().Name != "ReportGenerator.Reporting")
                                            .ToArray();

                    foreach (var reportBuilder in nonDefaultParsers)
                    {
                        result.Add(reportBuilder);
                    }

                    if (nonDefaultParsers.Length > 1)
                    {
                        Logger.WarnFormat(" " + Resources.SeveralCustomReportBuildersWithSameReportType, reportBuilderGroup.Key);
                    }

                    if (nonDefaultParsers.Length < reportBuilderGroup.Count())
                    {
                        Logger.WarnFormat(" " + Resources.DefaultReportBuilderReplaced, reportBuilderGroup.Key);
                    }
                }
            }

            foreach (var reportBuilder in result)
            {
                reportBuilder.ReportConfiguration = reportConfiguration;
            }

            return(result);
        }
コード例 #9
0
ファイル: EmailHandler.cs プロジェクト: CarlosVV/homebanking
 public void SendReport(IReportConfiguration configuration)
 {
     if (configuration != null && configuration.Attachment != null)
     {
         string      filename = "Solicitudes.xlsx";
         EmailSender sender   = new EmailSender();
         sender.Email(
             configuration.EmailTo,
             configuration.EmailBody,
             configuration.EmailSubject,
             configuration.EmailFrom,
             configuration.EmailFrom,
             configuration.CredentialUser,
             configuration.CredentialPassword,
             new MailAttachment(configuration.Attachment, filename)
             );
     }
 }
コード例 #10
0
        /// <summary>
        /// Gets the history storage.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <returns>
        /// The history storage or <code>null</code> if no storage exists.
        /// </returns>
        public IHistoryStorage GetHistoryStorage(IReportConfiguration reportConfiguration)
        {
            var storages = this.pluginLoader.LoadInstancesOfType <IHistoryStorage>().ToArray();

            if (storages.Length == 1)
            {
                return(storages[0]);
            }
            else if (storages.Length > 1)
            {
                Logger.WarnFormat(Resources.SeveralCustomHistoryStorages);
            }
            else if (reportConfiguration.HistoryDirectory != null)
            {
                return(new FileHistoryStorage(reportConfiguration.HistoryDirectory));
            }

            return(null);
        }
コード例 #11
0
        public OutputController(IReportConfiguration configuration)
        {
            _configuration = configuration;
            if (!configuration.WriteOutput)
            {
                Report = new ScenarioReport(configuration.AssemblyName, new NullWriter());
            }
            _fileStream = new FileStream(configuration.XmlReportFile, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true);

            _sw = new StreamWriter(_fileStream);

            XmlWriterSettings xws = new XmlWriterSettings();

            xws.Async = true;
            _xw       = XmlWriter.Create(_sw, xws);

            var writer = new ReportWriter(_xw);

            Report = new ScenarioReport(configuration.AssemblyName, writer);
        }
コード例 #12
0
        /// <inheritdoc/>
        public async Task <InstallObjectResult> InstallObject(InstallableObject installableObject)
        {
            if (installableObject.Content is FullReport report)
            {
                var result = new InstallObjectResult {
                    Success = true
                };

                try
                {
                    // TODO: Implement for sqlconfiguration
                    var mapConfig = new MapperConfiguration(cfg =>
                    {
                        cfg.CreateMap <KeyValueParameterItem, KeyValueParameterConfigurationModel>(MemberList.Source)
                        .ForMember(dest => dest.Name, opt => opt.MapFrom(x => x.Name))
                        .ForMember(dest => dest.OrderId, opt => opt.MapFrom(x => x.OrderId));

                        cfg.CreateMap <Report, KeyValueConfigurationModel>(MemberList.Source)
                        .ForMember(dest => dest.ConnectionString, opt => opt.MapFrom(x => x.Configuration.Connection))
                        .ForMember(dest => dest.PrinterName, opt => opt.MapFrom(x => x.Configuration.Provider))
                        .ForMember(dest => dest.IsListBased, opt => opt.MapFrom(x => ((KeyValueConfiguration)x.Configuration).IsListBased))
                        .ForMember(dest => dest.Parameter, opt => opt.MapFrom(x => ((KeyValueConfiguration)x.Configuration).Parameter))
                        .ForMember(dest => dest.PrinterName, opt => opt.MapFrom(x => x.PrinterName))
                        .ForMember(dest => dest.Type, opt => opt.MapFrom <EnumResolver>())
                        .ForSourceMember(x => x.Configuration, opt => opt.DoNotValidate());

                        cfg.CreateMap <Report, ParameterConfigurationModel>(MemberList.Source)
                        .ForMember(dest => dest.ConnectionString, opt => opt.MapFrom(x => x.Configuration.Connection))
                        .ForMember(dest => dest.ProviderName, opt => opt.MapFrom(x => x.Configuration.Provider))
                        .ForMember(dest => dest.ReportParameter, opt => opt.MapFrom(x => ((ParameterConfiguration)x.Configuration).Parameter))
                        .ForMember(dest => dest.PrinterName, opt => opt.MapFrom(x => x.PrinterName))
                        .ForMember(dest => dest.Type, opt => opt.MapFrom <EnumResolver>())
                        .ForSourceMember(x => x.Configuration, opt => opt.DoNotValidate());
                    });

                    mapConfig.AssertConfigurationIsValid();
                    var mapper = new Mapper(mapConfig);

                    IReportConfiguration mappedReportConfiguration = null;
                    if (report.Report.Configuration is KeyValueConfiguration)
                    {
                        mappedReportConfiguration = mapper.Map <Report, KeyValueConfigurationModel>(report.Report);
                    }
                    else if (report.Report.Configuration is ParameterConfiguration)
                    {
                        mappedReportConfiguration = mapper.Map <Report, ParameterConfigurationModel>(report.Report);
                    }
                    else
                    {
                        throw new NotImplementedException();
                    }

                    ReportManager.Singleton.SaveConfiguration(mappedReportConfiguration);
                    ReportManager.Singleton.SaveReportFile(mappedReportConfiguration.ReportName, report.ReportData);

                    result.Success = true;

                    await logService.WriteAsync($"Installed Report at {installableObject.Target}.", LogLevel.Info);
                }
                catch (Exception ex)
                {
                    await logService.WriteAsync($"Failed to install Report at {installableObject.Target}.", LogLevel.Error, ex);

                    result.Success = false;
                }
                return(result);
            }
            throw new InvalidContentException();
        }
コード例 #13
0
ファイル: Generator.cs プロジェクト: knom/ReportGenerator
        /// <summary>
        /// Executes the report generation.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns>
        public bool GenerateReport(IReportConfiguration reportConfiguration)
        {
            if (reportConfiguration == null)
            {
                throw new ArgumentNullException(nameof(reportConfiguration));
            }

            try
            {
                var configuration = this.GetConfiguration();
                var reportContext = new ReportContext(reportConfiguration);
                configuration.GetSection("settings").Bind(reportContext.Settings);

                var pluginLoader = new ReflectionPluginLoader(reportConfiguration.Plugins);

                IReportBuilderFactory reportBuilderFactory = new ReportBuilderFactory(pluginLoader);

                // Set log level before validation is performed
                LoggerFactory.VerbosityLevel = reportContext.ReportConfiguration.VerbosityLevel;

                if (!new ReportConfigurationValidator(reportBuilderFactory).Validate(reportContext.ReportConfiguration))
                {
#if DEBUG
                    if (System.Diagnostics.Debugger.IsAttached)
                    {
                        Console.ReadKey();
                    }
#endif

                    return(false);
                }

                var stopWatch = new System.Diagnostics.Stopwatch();
                stopWatch.Start();
                DateTime executionTime = DateTime.Now;

                var parserResult = new CoverageReportParser(
                    reportContext.Settings.NumberOfReportsParsedInParallel,
                    reportConfiguration.SourceDirectories,
                    new DefaultFilter(reportContext.ReportConfiguration.AssemblyFilters),
                    new DefaultFilter(reportContext.ReportConfiguration.ClassFilters),
                    new DefaultFilter(reportContext.ReportConfiguration.FileFilters))
                                   .ParseFiles(reportContext.ReportConfiguration.ReportFiles);

                Logger.DebugFormat(Resources.ReportParsingTook, stopWatch.ElapsedMilliseconds / 1000d);

                var riskHotspotsAnalysisThresholds = new RiskHotspotsAnalysisThresholds();
                configuration.GetSection("riskHotspotsAnalysisThresholds").Bind(riskHotspotsAnalysisThresholds);

                reportContext.RiskHotspotAnalysisResult = new RiskHotspotsAnalyzer(riskHotspotsAnalysisThresholds)
                                                          .PerformRiskHotspotAnalysis(parserResult.Assemblies);

                var overallHistoricCoverages = new System.Collections.Generic.List <Parser.Analysis.HistoricCoverage>();
                var historyStorage           = new HistoryStorageFactory(pluginLoader).GetHistoryStorage(reportContext.ReportConfiguration);

                if (historyStorage != null)
                {
                    new HistoryParser(historyStorage, reportContext.Settings.MaximumNumberOfHistoricCoverageFiles)
                    .ApplyHistoricCoverage(parserResult.Assemblies, overallHistoricCoverages);

                    reportContext.OverallHistoricCoverages = overallHistoricCoverages;
                }

                new Reporting.ReportGenerator(
                    parserResult,
                    reportBuilderFactory.GetReportBuilders(reportContext))
                .CreateReport(reportContext.ReportConfiguration.HistoryDirectory != null, overallHistoricCoverages, executionTime, reportContext.ReportConfiguration.Tag);

                if (historyStorage != null)
                {
                    new HistoryReportGenerator(historyStorage)
                    .CreateReport(parserResult.Assemblies, executionTime, reportContext.ReportConfiguration.Tag);
                }

                stopWatch.Stop();
                Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000d);

                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.GetExceptionMessageForDisplay());
                Logger.Error(ex.StackTrace);

#if DEBUG
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    Console.ReadKey();
                }
#endif

                return(false);
            }
        }
コード例 #14
0
        /// <summary>
        /// Generates a report using given configuration.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <param name="settings">The settings.</param>
        /// <param name="riskHotspotsAnalysisThresholds">The risk hotspots analysis thresholds.</param>
        /// <returns><c>true</c> if report was generated successfully; otherwise <c>false</c>.</returns>
        public bool GenerateReport(
            IReportConfiguration reportConfiguration,
            Settings settings,
            RiskHotspotsAnalysisThresholds riskHotspotsAnalysisThresholds)
        {
            if (reportConfiguration == null)
            {
                throw new ArgumentNullException(nameof(reportConfiguration));
            }

            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            if (riskHotspotsAnalysisThresholds == null)
            {
                throw new ArgumentNullException(nameof(riskHotspotsAnalysisThresholds));
            }

            try
            {
                var pluginLoader = new ReflectionPluginLoader(reportConfiguration.Plugins);
                IReportBuilderFactory reportBuilderFactory = new ReportBuilderFactory(pluginLoader);

                // Set log level before validation is performed
                LoggerFactory.VerbosityLevel = reportConfiguration.VerbosityLevel;

                Logger.Info($"{Resources.Executable}: {typeof(Program).Assembly.Location}");
                Logger.Info($"{Resources.WorkingDirectory}: {Directory.GetCurrentDirectory()}");

                if (!new ReportConfigurationValidator(reportBuilderFactory).Validate(reportConfiguration))
                {
#if DEBUG
                    if (System.Diagnostics.Debugger.IsAttached)
                    {
                        Console.ReadKey();
                    }
#endif

                    return(false);
                }

                Logger.Debug(Resources.Settings);
                Logger.Debug(" " + JsonSerializer.ToJsonString(settings));
                Logger.Debug(" " + JsonSerializer.ToJsonString(riskHotspotsAnalysisThresholds));

                var stopWatch = Stopwatch.StartNew();

                var parserResult = new CoverageReportParser(
                    settings.NumberOfReportsParsedInParallel,
                    settings.NumberOfReportsMergedInParallel,
                    reportConfiguration.SourceDirectories,
                    new DefaultFilter(reportConfiguration.AssemblyFilters),
                    new DefaultFilter(reportConfiguration.ClassFilters),
                    new DefaultFilter(reportConfiguration.FileFilters))
                                   .ParseFiles(reportConfiguration.ReportFiles);

                Logger.DebugFormat(Resources.ReportParsingTook, stopWatch.ElapsedMilliseconds / 1000d);

                this.GenerateReport(
                    reportConfiguration,
                    settings,
                    riskHotspotsAnalysisThresholds,
                    parserResult);

                stopWatch.Stop();
                Logger.InfoFormat(Resources.ReportGenerationTook, stopWatch.ElapsedMilliseconds / 1000d);

                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.GetExceptionMessageForDisplay());
                Logger.Error(ex.StackTrace);

#if DEBUG
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    Console.ReadKey();
                }
#endif

                return(false);
            }
        }
コード例 #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HtmlReportBuilderReportConfiguration"/> class.
 /// </summary>
 /// <param name="reportConfiguration">The wrapped <see cref="IReportConfiguration"/> instance.</param>
 /// <param name="targetDirectory">The custom target directory.</param>
 public HtmlReportBuilderReportConfiguration(IReportConfiguration reportConfiguration, string targetDirectory)
 {
     this.reportConfiguration = reportConfiguration;
     this.TargetDirectory     = targetDirectory;
 }
コード例 #16
0
ファイル: HtmlTestProcessor.cs プロジェクト: ncgonz/given
 public HtmlTestProcessor(IReportConfiguration reportConfiguration)
 {
     _reportConfiguration = reportConfiguration;
 }
コード例 #17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ReportContext"/> class.
 /// </summary>
 /// <param name="reportConfiguration">The configuration options.</param>
 /// <param name="settings">The settings.</param>
 internal ReportContext(IReportConfiguration reportConfiguration, Settings settings)
 {
     this.ReportConfiguration = reportConfiguration ?? throw new ArgumentNullException(nameof(reportConfiguration));
     this.Settings            = settings ?? throw new ArgumentNullException(nameof(settings));
 }
コード例 #18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ReportContext"/> class.
 /// </summary>
 /// <param name="reportConfiguration">The configuration options.</param>
 internal ReportContext(IReportConfiguration reportConfiguration)
 {
     this.ReportConfiguration = reportConfiguration;
 }
コード例 #19
0
        /// <summary>
        /// Validates all parameters.
        /// </summary>
        /// <param name="reportConfiguration">The report configuration.</param>
        /// <returns>
        ///   <c>true</c> if all parameters are in a valid state; otherwise <c>false</c>.
        /// </returns>
        internal bool Validate(IReportConfiguration reportConfiguration)
        {
            bool result = true;

            if (reportConfiguration.InvalidReportFilePatterns.Count > 0)
            {
                foreach (var failedReportFilePattern in reportConfiguration.InvalidReportFilePatterns)
                {
                    Logger.ErrorFormat(Resources.FailedReportFilePattern, failedReportFilePattern);
                }

                result &= false;
            }

            foreach (var file in reportConfiguration.Plugins)
            {
                if (!File.Exists(file))
                {
                    Logger.ErrorFormat(Resources.NotExistingPlugin, file);
                    result &= false;
                }
            }

            if (!reportConfiguration.ReportFiles.Any())
            {
                Logger.Error(Resources.NoReportFiles);
                result &= false;
            }
            else
            {
                foreach (var file in reportConfiguration.ReportFiles)
                {
                    if (!File.Exists(file))
                    {
                        Logger.ErrorFormat(Resources.NotExistingReportFile, file);
                        result &= false;
                    }
                }
            }

            if (string.IsNullOrEmpty(reportConfiguration.TargetDirectory))
            {
                Logger.Error(Resources.NoTargetDirectory);
                result &= false;
            }
            else if (!Directory.Exists(reportConfiguration.TargetDirectory))
            {
                try
                {
                    Directory.CreateDirectory(reportConfiguration.TargetDirectory);
                }
                catch (Exception ex)
                {
                    Logger.ErrorFormat(Resources.TargetDirectoryCouldNotBeCreated, reportConfiguration.TargetDirectory, ex.GetExceptionMessageForDisplay());
                    result &= false;
                }
            }

            if (!string.IsNullOrEmpty(reportConfiguration.HistoryDirectory) && !Directory.Exists(reportConfiguration.HistoryDirectory))
            {
                try
                {
                    Directory.CreateDirectory(reportConfiguration.HistoryDirectory);
                }
                catch (Exception ex)
                {
                    Logger.ErrorFormat(Resources.HistoryDirectoryCouldNotBeCreated, reportConfiguration.HistoryDirectory, ex.GetExceptionMessageForDisplay());
                    result &= false;
                }
            }

            foreach (var sourceDirectory in reportConfiguration.SourceDirectories)
            {
                if (!Directory.Exists(sourceDirectory))
                {
                    Logger.ErrorFormat(Resources.SourceDirectoryDoesNotExist, sourceDirectory);
                    result &= false;
                }
            }

            var availableReportTypes = this.reportBuilderFactory.GetAvailableReportTypes();

            foreach (var reportType in reportConfiguration.ReportTypes)
            {
                if (!availableReportTypes.Contains(reportType, StringComparer.OrdinalIgnoreCase))
                {
                    Logger.ErrorFormat(Resources.UnknownReportType, reportType);
                    result &= false;
                }
            }

            foreach (var filter in reportConfiguration.AssemblyFilters)
            {
                if (string.IsNullOrEmpty(filter) ||
                    (!filter.StartsWith("+", StringComparison.OrdinalIgnoreCase) &&
                     !filter.StartsWith("-", StringComparison.OrdinalIgnoreCase)))
                {
                    Logger.ErrorFormat(Resources.InvalidFilter, filter);
                    result &= false;
                }
            }

            if (!reportConfiguration.VerbosityLevelValid)
            {
                Logger.Error(Resources.UnknownVerbosityLevel);
                result &= false;
            }

            return(result);
        }
コード例 #20
0
 public HtmlTestProcessor(IReportConfiguration reportConfiguration)
 {
     _reportConfiguration = reportConfiguration;
 }