public static FilePath CreateIssueReport(
            this ICakeContext context,
            IEnumerable <IIssue> issues,
            IIssueReportFormat reportFormat,
            ICreateIssueReportSettings settings)
        {
            context.NotNull(nameof(context));

            // ReSharper disable once PossibleMultipleEnumeration
            issues.NotNullOrEmptyElement(nameof(issues));

            reportFormat.NotNull(nameof(reportFormat));
            settings.NotNull(nameof(settings));

            var issueReportCreator = new IssueReportCreator(context.Log);

            // ReSharper disable once PossibleMultipleEnumeration
            return(issueReportCreator.CreateReport(issues, reportFormat, settings));
        }
        /// <summary>
        /// Creates a report from a list of issues.
        /// </summary>
        /// <param name="issues">Issues for which the report should be created.</param>
        /// <param name="reportFormat">Report format to use.</param>
        /// <param name="settings">Settings to use.</param>
        /// <returns>Path to the created report or <c>null</c> if report could not be created.</returns>
        public FilePath CreateReport(
            IEnumerable <IIssue> issues,
            IIssueReportFormat reportFormat,
            ICreateIssueReportSettings settings)
        {
            issues.NotNullOrEmptyElement(nameof(issues));
            reportFormat.NotNull(nameof(reportFormat));
            settings.NotNull(nameof(settings));

            var reportFormatName = reportFormat.GetType().Name;

            this.log.Verbose("Initialize report format {0}...", reportFormatName);

            if (!reportFormat.Initialize(settings))
            {
                this.log.Warning("Error initializing report format {0}.", reportFormatName);
                return(null);
            }

            this.log.Verbose("Creating report {0}...", reportFormatName);
            return(reportFormat.CreateReport(issues));
        }
        /// <inheritdoc />
        public override bool Initialize(ICreateIssueReportSettings settings)
        {
            var result = base.Initialize(settings);

            return(result && !this.ShouldFailOnInitialization);
        }