Пример #1
0
        private static string GenerateReport(EstadoDoProjeto resultadoGeral, string solutionDirectory)
        {
            var reportDirectory = Combine(solutionDirectory, "CodeMetricsReport");
            var reportPath      = Combine(reportDirectory, "CodeMetricsReport.zip");
            var rawReportPath   = Combine(reportDirectory, "RawCodeMetricsReport.xml");

            var reportTemplateFactory = new ReportTemplateFactory();
            var report = reportTemplateFactory.GetReport(resultadoGeral);
            var list = new[] { "*.css", "*.js" }.SelectMany(ext => Directory.GetFiles(Combine(ApplicationPath, "ReportTemplate"), ext)).ToList();


            Directory.CreateDirectory(reportDirectory);
            using (var zipArchive = new ZipArchive(OpenWrite(reportPath), ZipArchiveMode.Create))
            {
                foreach (var item in list)
                {
                    var fileName = GetFileName(item);
                    zipArchive.CreateEntryFromFile(item, fileName);
#if DEBUG
                    Copy(item, Combine(reportDirectory, fileName), true);
#endif
                }
                var archiveEntry = zipArchive.CreateEntry("Index.html");
                using (var stream = archiveEntry.Open())
                    using (var streamWriter = new StreamWriter(stream, Encoding.UTF8))
                        streamWriter.Write(report);
#if DEBUG
                reportPath = Combine(reportDirectory, "Index.html");
                WriteAllText(reportPath, report, Encoding.UTF8);
#endif
                zipArchive.Dispose();
            }

            using (var fileStream = Open(rawReportPath, FileMode.Create))
            {
                var xmlSerializer = new XmlSerializer(typeof(EstadoDoProjeto));
                xmlSerializer.Serialize(fileStream, resultadoGeral);
            }

            return(reportPath);
        }