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); }
/// <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; }
/// <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); }
/// <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); } }
/// <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); } }
public SolicitudTask(IDataHandler datahandler, IReportHandler reporthandler, IEmailHandler emailhandler, IReportConfiguration reportconfiguration, SearchCriteria filter) { _datahandler = datahandler; _reporthandler = reporthandler; _emailhandler = emailhandler; _reportconfiguration = reportconfiguration; _filtercriteria = filter; }
public TextReportWriter(IReportConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException("configuration"); } _configuration = configuration; }
/// <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); }
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) ); } }
/// <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); }
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); }
/// <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(); }
/// <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); } }
/// <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); } }
/// <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; }
public HtmlTestProcessor(IReportConfiguration reportConfiguration) { _reportConfiguration = reportConfiguration; }
/// <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)); }
/// <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; }
/// <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); }