/// <summary>
 /// Creates the summary report.
 /// </summary>
 /// <param name="summaryResult">The summary result.</param>
 public override void CreateSummaryReport(SummaryResult summaryResult)
 {
     using (var renderer = new HtmlRenderer(true))
     {
         this.CreateSummaryReport(renderer, summaryResult);
     }
 }
 /// <summary>
 /// Creates the summary report.
 /// </summary>
 /// <param name="summaryResult">The summary result.</param>
 public override void CreateSummaryReport(SummaryResult summaryResult)
 {
     using (var renderer = new HtmlRenderer(false, this.javaScriptContent))
     {
         this.CreateSummaryReport(renderer, summaryResult);
     }
 }
        /// <summary>
        /// Creates the summary report.
        /// </summary>
        /// <param name="summaryResult">The summary result.</param>
        public void CreateSummaryReport(SummaryResult summaryResult)
        {
            if (summaryResult == null)
            {
                throw new ArgumentNullException("summaryResult");
            }

            string targetPath = Path.Combine(this.TargetDirectory, "Summary.txt");

            using (var reportTextWriter = new StreamWriter(new FileStream(targetPath, FileMode.Create), Encoding.UTF8))
            {
                reportTextWriter.WriteLine(ReportResources.Summary);
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.GeneratedOn, DateTime.Now.ToShortDateString() + " - " + DateTime.Now.ToLongTimeString());
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.Parser, summaryResult.UsedParser);
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.Assemblies2, summaryResult.Assemblies.Count().ToString(CultureInfo.InvariantCulture));
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.Classes, summaryResult.Assemblies.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.Files2, summaryResult.Assemblies.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.Coverage2, summaryResult.CoverageQuota.HasValue ? summaryResult.CoverageQuota.Value.ToString("f1", CultureInfo.InvariantCulture) + "%" : string.Empty);
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.CoveredLines, summaryResult.CoveredLines.ToString(CultureInfo.InvariantCulture));
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.UncoveredLines, (summaryResult.CoverableLines - summaryResult.CoveredLines).ToString(CultureInfo.InvariantCulture));
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.CoverableLines, summaryResult.CoverableLines.ToString(CultureInfo.InvariantCulture));
                reportTextWriter.WriteLine("  {0} {1}", ReportResources.TotalLines, summaryResult.TotalLines.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));

                if (summaryResult.Assemblies.Any())
                {
                    var maximumNameLength = summaryResult.Assemblies
                        .SelectMany(a => a.Classes).Select(c => c.Name)
                        .Union(summaryResult.Assemblies.Select(a => a.Name))
                        .Max(n => n.Length);

                    foreach (var assembly in summaryResult.Assemblies)
                    {
                        string assemblyQuota = assembly.CoverageQuota.HasValue ? assembly.CoverageQuota.Value.ToString("f1", CultureInfo.InvariantCulture) + "%" : string.Empty;
                        reportTextWriter.WriteLine();
                        reportTextWriter.WriteLine(
                            "{0}{1}  {2}",
                            assembly.Name,
                            new string(' ', maximumNameLength - assembly.Name.Length + 8 - assemblyQuota.Length),
                            assemblyQuota);

                        foreach (var @class in assembly.Classes)
                        {
                            string classQuota = @class.CoverageQuota.HasValue ? @class.CoverageQuota.Value.ToString("f1", CultureInfo.InvariantCulture) + "%" : string.Empty;
                            reportTextWriter.WriteLine(
                                "  {0}{1}  {2}",
                                @class.Name,
                                new string(' ', maximumNameLength - @class.Name.Length + 6 - classQuota.Length),
                                classQuota);
                        }
                    }
                }
                else
                {
                    reportTextWriter.WriteLine(ReportResources.NoCoveredAssemblies);
                }

                reportTextWriter.Flush();
            }
        }
 /// <summary>
 /// Creates the summary report.
 /// </summary>
 /// <param name="summaryResult">The summary result.</param>
 public void CreateSummaryReport(SummaryResult summaryResult)
 {
 }
Пример #5
0
 /// <summary>
 /// Creates the summary report.
 /// </summary>
 /// <param name="summaryResult">The summary result.</param>
 public override void CreateSummaryReport(SummaryResult summaryResult)
 {
     this.CreateSummaryReport(new XmlRenderer(), summaryResult);
 }
        /// <summary>
        /// Renderes the SVG.
        /// </summary>
        /// <param name="summaryResult">Indicates whether </param>
        /// <param name="includeLineCoverage">Indicates whether line coverage should be included.</param>
        /// <param name="includeBranchCoverage">Indicates whether branch coverage should be included.</param>
        /// <returns>The rendered SVG.</returns>
        private string CreateBadge(SummaryResult summaryResult, bool includeLineCoverage, bool includeBranchCoverage)
        {
            string lineCoverageClass = includeLineCoverage && includeBranchCoverage ? "linecoverage" : string.Empty;
            string branchCoverageClass = includeLineCoverage && includeBranchCoverage ? "branchcoverage" : string.Empty;

            return string.Format(
                Template,
                ReportResources.CodeCoverage,
                includeLineCoverage ? string.Format(LineCoverageSymbol, lineCoverageClass) : string.Empty,
                includeBranchCoverage ? string.Format(BranchCoverageSymbol, branchCoverageClass) : string.Empty,
                string.Format("{0} {1} {2}", ReportResources.GeneratedBy, typeof(IReportBuilder).Assembly.GetName().Name, typeof(IReportBuilder).Assembly.GetName().Version),
                ReportResources.Coverage3,
                includeLineCoverage ? string.Format(CoverageText, lineCoverageClass, summaryResult.CoverageQuota.Value.ToString(CultureInfo.InvariantCulture)) : string.Empty,
                includeBranchCoverage ? string.Format(CoverageText, branchCoverageClass, summaryResult.BranchCoverageQuota.Value.ToString(CultureInfo.InvariantCulture)) : string.Empty,
                includeLineCoverage ? string.Format(CoverageTooltip, lineCoverageClass, ReportResources.Coverage) : string.Empty,
                includeBranchCoverage ? string.Format(CoverageTooltip, branchCoverageClass, ReportResources.BranchCoverage) : string.Empty);
        }
        /// <summary>
        /// Creates the summary report.
        /// </summary>
        /// <param name="summaryResult">The summary result.</param>
        public void CreateSummaryReport(SummaryResult summaryResult)
        {
            if (summaryResult == null)
            {
                throw new ArgumentNullException(nameof(summaryResult));
            }

            if (summaryResult.CoverageQuota.HasValue)
            {
                File.WriteAllText
                    (Path.Combine(this.TargetDirectory, "badge_linecoverage.svg"),
                    this.CreateBadge(summaryResult, true, false));
            }

            if (summaryResult.BranchCoverageQuota.HasValue)
            {
                File.WriteAllText
                    (Path.Combine(this.TargetDirectory, "badge_branchcoverage.svg"),
                    this.CreateBadge(summaryResult, false, true));
            }

            if (summaryResult.CoverageQuota.HasValue && summaryResult.BranchCoverageQuota.HasValue)
            {
                File.WriteAllText
                    (Path.Combine(this.TargetDirectory, "badge_combined.svg"),
                    this.CreateBadge(summaryResult, true, true));
            }

        }
Пример #8
0
        /// <summary>
        /// Creates the summary report.
        /// </summary>
        /// <param name="summaryResult">The summary result.</param>
        public void CreateSummaryReport(Palmmedia.ReportGenerator.Parser.Analysis.SummaryResult summaryResult)
        {
            var historicCoverages = this.GetOverallHistoricCoverages(this.ReportConfiguration.OverallHistoricCoverages);

            historicCoverages = this.FilterHistoricCoverages(historicCoverages, 100);

            if (historicCoverages.Any(h => h.CoverageQuota.HasValue || h.BranchCoverageQuota.HasValue))
            {
                Chart chart = new Chart()
                {
                    Size = new Size(900, 300),
                };

                chart.ChartAreas.Add("Default");
                chart.ChartAreas[0].AxisX.LineColor = Color.LightGray;
                chart.ChartAreas[0].AxisX.MajorTickMark.LineColor     = Color.LightGray;
                chart.ChartAreas[0].AxisX.MajorTickMark.TickMarkStyle = TickMarkStyle.None;
                chart.ChartAreas[0].AxisX.MajorTickMark.Enabled       = false;
                chart.ChartAreas[0].AxisX.MajorGrid.Enabled           = false;
                chart.ChartAreas[0].AxisX.LabelStyle.Enabled          = false;

                chart.ChartAreas[0].AxisY.LineColor = Color.LightGray;
                chart.ChartAreas[0].AxisY.MajorTickMark.LineColor = Color.LightGray;
                chart.ChartAreas[0].AxisY.MajorGrid.LineColor     = Color.LightGray;
                chart.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
                chart.ChartAreas[0].AxisY.Minimum = 0;
                chart.ChartAreas[0].AxisY.Maximum = 100;

                chart.Legends.Add(new Legend("Default")
                {
                    Docking     = Docking.Bottom,
                    Alignment   = StringAlignment.Center,
                    BorderWidth = 1,
                    BorderColor = Color.LightGray
                });

                chart.Series.Add(ReportResources.Coverage2);
                chart.Series[ReportResources.Coverage2].ChartType   = SeriesChartType.Line;
                chart.Series[ReportResources.Coverage2].Color       = Color.Red;
                chart.Series[ReportResources.Coverage2].MarkerSize  = 5;
                chart.Series[ReportResources.Coverage2].MarkerColor = Color.Red;
                chart.Series[ReportResources.Coverage2].MarkerStyle = MarkerStyle.Circle;

                if (historicCoverages.Any(h => h.BranchCoverageQuota.HasValue))
                {
                    chart.Series.Add(ReportResources.BranchCoverage2);
                    chart.Series[ReportResources.BranchCoverage2].ChartType   = SeriesChartType.Line;
                    chart.Series[ReportResources.BranchCoverage2].Color       = Color.Blue;
                    chart.Series[ReportResources.BranchCoverage2].MarkerSize  = 5;
                    chart.Series[ReportResources.BranchCoverage2].MarkerColor = Color.Blue;
                    chart.Series[ReportResources.BranchCoverage2].MarkerStyle = MarkerStyle.Circle;
                }

                int counter = 0;
                foreach (var historicCoverage in historicCoverages)
                {
                    chart.Series[ReportResources.Coverage2].Points.AddXY(counter, historicCoverage.CoverageQuota.GetValueOrDefault());

                    if (historicCoverages.Any(h => h.BranchCoverageQuota.HasValue))
                    {
                        chart.Series[ReportResources.BranchCoverage2].Points.AddXY(counter, historicCoverage.BranchCoverageQuota.GetValueOrDefault());
                    }

                    counter++;
                }

                chart.SaveImage(Path.Combine(this.ReportConfiguration.TargetDirectory, "CoverageHistory.png"), ChartImageFormat.Png);
            }
        }
 /// <summary>
 /// Creates the summary report.
 /// </summary>
 /// <param name="summaryResult">The summary result.</param>
 public abstract void CreateSummaryReport(SummaryResult summaryResult);
Пример #10
0
        /// <summary>
        /// Creates the summary report.
        /// </summary>
        /// <param name="reportRenderer">The report renderer.</param>
        /// <param name="summaryResult">The summary result.</param>
        public virtual void CreateSummaryReport(IReportRenderer reportRenderer, SummaryResult summaryResult)
        {
            if (reportRenderer == null)
            {
                throw new ArgumentNullException(nameof(reportRenderer));
            }

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

            reportRenderer.BeginSummaryReport(this.TargetDirectory, ReportResources.Summary);
            reportRenderer.Header(ReportResources.Summary);

            reportRenderer.BeginKeyValueTable();
            reportRenderer.KeyValueRow(ReportResources.GeneratedOn, DateTime.Now.ToShortDateString() + " - " + DateTime.Now.ToLongTimeString());
            reportRenderer.KeyValueRow(ReportResources.Parser, summaryResult.UsedParser);
            reportRenderer.KeyValueRow(ReportResources.Assemblies2, summaryResult.Assemblies.Count().ToString(CultureInfo.InvariantCulture));
            reportRenderer.KeyValueRow(ReportResources.Classes, summaryResult.Assemblies.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
            reportRenderer.KeyValueRow(ReportResources.Files2, summaryResult.Assemblies.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
            reportRenderer.KeyValueRow(ReportResources.CoveredLines, summaryResult.CoveredLines.ToString(CultureInfo.InvariantCulture));
            reportRenderer.KeyValueRow(ReportResources.UncoveredLines, (summaryResult.CoverableLines - summaryResult.CoveredLines).ToString(CultureInfo.InvariantCulture));
            reportRenderer.KeyValueRow(ReportResources.CoverableLines, summaryResult.CoverableLines.ToString(CultureInfo.InvariantCulture));
            reportRenderer.KeyValueRow(ReportResources.TotalLines, summaryResult.TotalLines.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            reportRenderer.KeyValueRow(ReportResources.Coverage2, summaryResult.CoverageQuota.HasValue ? summaryResult.CoverageQuota.Value.ToString(CultureInfo.InvariantCulture) + "%" : string.Empty);

            decimal? branchCoverage = summaryResult.BranchCoverageQuota;

            if (branchCoverage.HasValue)
            {
                reportRenderer.KeyValueRow(ReportResources.BranchCoverage2, branchCoverage.Value.ToString(CultureInfo.InvariantCulture) + "%");
            }

            reportRenderer.FinishTable();

            var historicCoverages = this.GetOverallHistoricCoverages(summaryResult.Assemblies.SelectMany(a => a.Classes));
            if (historicCoverages.Any(h => h.CoverageQuota.HasValue || h.BranchCoverageQuota.HasValue))
            {
                reportRenderer.Header(ReportResources.History);
                reportRenderer.Chart(historicCoverages);
            }

            reportRenderer.Header(ReportResources.Assemblies);

            if (summaryResult.Assemblies.Any())
            {
                reportRenderer.BeginSummaryTable();

                foreach (var assembly in summaryResult.Assemblies)
                {
                    reportRenderer.SummaryAssembly(assembly);

                    foreach (var @class in assembly.Classes)
                    {
                        reportRenderer.SummaryClass(@class);
                    }
                }

                reportRenderer.FinishTable();
            }
            else
            {
                reportRenderer.Paragraph(ReportResources.NoCoveredAssemblies);
            }

            reportRenderer.CustomSummary(summaryResult.Assemblies);

            reportRenderer.SaveSummaryReport(this.TargetDirectory);
        }
Пример #11
0
        /// <summary>
        /// Starts the generation of the report.
        /// </summary>
        /// <param name="addHistoricCoverage">if set to <c>true</c> historic coverage information is added to classes.</param>
        /// <param name="executionTime">The execution time.</param>
        internal void CreateReport(bool addHistoricCoverage, DateTime executionTime)
        {
            var filteredAssemblies = this.parser.Assemblies
                .Where(a => this.assemblyFilter.IsAssemblyIncludedInReport(a.Name));

            int numberOfClasses = filteredAssemblies.Sum(a => a.Classes.Count());

            Logger.InfoFormat(Resources.AnalyzingClasses, numberOfClasses);

            int counter = 0;

            foreach (var assembly in filteredAssemblies)
            {
                foreach (var @class in assembly.Classes)
                {
                    counter++;

                    Logger.DebugFormat(
                        CultureInfo.InvariantCulture,
                        " " + Resources.CreatingReport,
                        counter,
                        numberOfClasses,
                        @class.Assembly.ShortName,
                        @class.Name);

                    foreach (var renderer in this.renderers)
                    {
                        var fileAnalyses = @class.Files.Select(f => f.AnalyzeFile()).ToArray();

                        try
                        {
                            if (addHistoricCoverage)
                            {
                                @class.AddHistoricCoverage(new HistoricCoverage(@class, executionTime));
                            }

                            renderer.CreateClassReport(@class, fileAnalyses);
                        }
                        catch (Exception ex)
                        {
                            Logger.ErrorFormat(
                                CultureInfo.InvariantCulture,
                                "  " + Resources.ErrorDuringRenderingClassReport,
                                @class.Name,
                                renderer.ReportType,
                                ex.Message);
                        }
                    }
                }
            }

            Logger.Debug(" " + Resources.CreatingSummary);
            SummaryResult summaryResult = new SummaryResult(filteredAssemblies, this.parser.ToString());

            foreach (var renderer in this.renderers)
            {
                try
                {
                    renderer.CreateSummaryReport(summaryResult);
                }
                catch (Exception ex)
                {
                    Logger.ErrorFormat(
                        CultureInfo.InvariantCulture,
                        "  " + Resources.ErrorDuringRenderingSummaryReport,
                        renderer.ReportType,
                        ex.Message);
                }
            }
        }
Пример #12
0
 /// <summary>
 /// Creates the summary report.
 /// </summary>
 /// <param name="summaryResult">The summary result.</param>
 public override void CreateSummaryReport(SummaryResult summaryResult)
 {
     this.CreateSummaryReport(this.renderer, summaryResult);
 }