public void Generate(Analysis analysis) { Console.WriteLine("Generating Excel report..."); if (analysis == null) { throw new ArgumentException("Parameter analysis is null.", nameof(analysis)); } this.FileCommitsList = analysis.FileCommits.Values.OrderByDescending(fc => fc.CommitCount).ThenBy(fc => fc.Filename); this.UserfileCommitsList = analysis.UserfileCommits.Values.OrderByDescending(fc => fc.CommitCount).ThenBy(fc => fc.Filename).ThenBy(fc => fc.Username); this.FolderCommits = analysis.FolderCommits; this.FolderCommitsList = analysis.FolderCommits.Values.OrderByDescending(fc => fc.FileChanges); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (var excelPackage = new ExcelPackage()) { var sheetCommitsForEachSubfolder = excelPackage.Workbook.Worksheets.Add("Commits for each sub-folder"); AddSectionCommitsForEachMonth(sheetCommitsForEachSubfolder); var sheetTopMostChangedFiles = excelPackage.Workbook.Worksheets.Add($"Top {NumberOfFilesToList} most changed files"); AddSectionCommitsForEachFile(sheetTopMostChangedFiles); var sheetStatistics = excelPackage.Workbook.Worksheets.Add("Statistics"); AddSectionStatistics(sheetStatistics, analysis); var sheetCommitsEachDay = excelPackage.Workbook.Worksheets.Add("Commits each day"); AddSectionCommitsEachDay(sheetCommitsEachDay, analysis.CommitsEachDay); var sheetLinesChangedEachDay = excelPackage.Workbook.Worksheets.Add("Lines changed each day"); AddSectionLinesChangedEachDay(sheetLinesChangedEachDay, analysis.LinesOfCodeAddedEachDay, analysis.LinesOfCodeDeletedEachDay); var sheetCodeAge = excelPackage.Workbook.Worksheets.Add("Code age"); AddSectionCodeAge(sheetCodeAge, analysis.CodeAge); if (analysis.Tags.Any() || analysis.Branches.Any()) { var sheetTags = excelPackage.Workbook.Worksheets.Add("Tags and Branches"); AddSectionTagsAndBranches(sheetTags, analysis.Tags, analysis.Branches); } var sheetNumberOfFilesOfEachType = excelPackage.Workbook.Worksheets.Add("Number of files of each type"); AddSectionNumberOfFilesOfEachType(sheetNumberOfFilesOfEachType, analysis.FileTypes); excelPackage.SaveAs(systemIO.FileInfo($"{ReportFilename}.xlsx")); } }
public IList <FileInfo> Directory(string path, bool useCache = true) { if (!_systemio.DirectoryExists(path)) { logger.LogError(path + " not found"); throw new ArgumentException(path + " not found"); } var result = new List <FileInfo>(); if (useCache) { if (!_systemio.DirectoryExists(path + "/.archive")) { _systemio.DirectoryCreateDirectory(path + "/.archive"); } } var files = _systemio.DirectoryGetFiles(path); foreach (var file in files) { if (useCache) { var fileInfo = _systemio.FileInfo(file); if (_systemio.FileExists(path + "/.archive/" + fileInfo.Name)) { result.Add(_fileInfoIO.Load(path + "/.archive/" + fileInfo.Name)); continue; } else { var infoObject = File(file); result.Add(infoObject); _fileInfoIO.Save(infoObject, path + "/.archive/" + fileInfo.Name); } continue; } result.Add(File(file)); } return(result); }