private void CalculateSums(CodeFile codeFile) { NumberLines += codeFile.NumberLines; NumberBlankLines += codeFile.NumberBlankLines; NumberCommentsLines += codeFile.NumberCommentsLines; NumberLinesInDesignerFiles += codeFile.NumberLinesInDesignerFiles; var codeLines = codeFile.NumberLines - codeFile.NumberBlankLines - codeFile.NumberCommentsLines - codeFile.NumberLinesInDesignerFiles; var extension = codeFile.File.Extension.ToLower(); if (!LinesOfCodePerExtension.ContainsKey(extension)) LinesOfCodePerExtension.Add(extension, 0); LinesOfCodePerExtension[extension] += codeLines; NumberCodeLines += codeLines; if (codeFile.IsTestFile || codeFile.File.Directory.FullName.IndexOf("test", StringComparison.OrdinalIgnoreCase) >= 0) { NumberTestCodeLines += codeLines; } }
public void Count(string filePattern) { string[] filters = filePattern.Split(';'); foreach (string filter in filters) { FileInfo[] files = Directory.GetFiles(filter.Trim(), SearchOption.AllDirectories); foreach (FileInfo file in files) { if (!LinesOfCodePerExtension.ContainsKey(file.Extension.ToLower())) LinesOfCodePerExtension.Add(file.Extension.ToLower(), 0); CodeFile codeFile = new CodeFile(file.FullName); codeFile.CountLines(); NumberLines += codeFile.NumberLines; NumberBlankLines += codeFile.NumberBlankLines; NumberCommentsLines += codeFile.NumberCommentsLines; NumberLinesInDesignerFiles += codeFile.NumberLinesInDesignerFiles; int codeLines = codeFile.NumberLines - codeFile.NumberBlankLines - codeFile.NumberCommentsLines - codeFile.NumberLinesInDesignerFiles; LinesOfCodePerExtension[file.Extension.ToLower()] += codeLines; NumberCodeLines += codeLines; if (codeFile.IsTestFile) { NumberTestCodeLines += codeLines; } } } }
public void FindAndAnalyzeCodeFiles(string filePattern, string directoriesToIgnore) { NumberLines = 0; NumberBlankLines = 0; NumberLinesInDesignerFiles = 0; NumberCommentsLines = 0; NumberCodeLines = 0; NumberTestCodeLines = 0; var filters = filePattern.Split(';'); var directoryFilter = directoriesToIgnore.Split(';'); var lastUpdate = DateTime.Now; var timer = new TimeSpan(0,0,0,0,500); foreach (var filter in filters) { foreach (var file in GetFiles(_directory, filter.Trim())) { if (DirectoryIsFiltered(file.Directory, directoryFilter)) continue; var codeFile = new CodeFile(file.FullName); codeFile.CountLines(); CalculateSums(codeFile); if (LinesOfCodeUpdated != null && DateTime.Now - lastUpdate > timer) { lastUpdate = DateTime.Now; LinesOfCodeUpdated(this, EventArgs.Empty); } } } //Send 'changed' event when done if (LinesOfCodeUpdated != null) LinesOfCodeUpdated(this, EventArgs.Empty); }
public void FindAndAnalyzeCodeFiles(string filePattern, string directoriesToIgnore, List<string> filesToCheck) { var filters = filePattern.Replace("*", "").Split(';'); var directoryFilter = directoriesToIgnore.Split(';'); var lastUpdate = DateTime.Now; var timer = new TimeSpan(0,0,0,0,500); foreach (var file in GetFiles(filesToCheck, filters)) { if (DirectoryIsFiltered(file.Directory, directoryFilter)) continue; var codeFile = new CodeFile(file.FullName); codeFile.CountLines(); CalculateSums(codeFile); if (LinesOfCodeUpdated != null && DateTime.Now - lastUpdate > timer) { lastUpdate = DateTime.Now; LinesOfCodeUpdated(this, EventArgs.Empty); } } }
private void CalculateSums(CodeFile codeFile) { NumberLines += codeFile.NumberLines; NumberBlankLines += codeFile.NumberBlankLines; NumberCommentsLines += codeFile.NumberCommentsLines; NumberLinesInDesignerFiles += codeFile.NumberLinesInDesignerFiles; var codeLines = codeFile.NumberLines - codeFile.NumberBlankLines - codeFile.NumberCommentsLines - codeFile.NumberLinesInDesignerFiles; var extension = codeFile.File.Extension.ToLower(); if (!LinesOfCodePerExtension.ContainsKey(extension)) LinesOfCodePerExtension.Add(extension, 0); LinesOfCodePerExtension[extension] += codeLines; NumberCodeLines += codeLines; if (codeFile.IsTestFile) { NumberTestCodeLines += codeLines; } }
public void FindAndAnalyzeCodeFiles(string filePattern, string directoriesToIgnore, IEnumerable <string> filesToCheck) { var extensions = filePattern.Replace("*", "").Split(';').ToHashSet(StringComparer.InvariantCultureIgnoreCase); var directoryFilter = directoriesToIgnore.Split(';'); var lastUpdate = DateTime.Now; var timer = TimeSpan.FromMilliseconds(500); foreach (var file in GetFiles()) { if (DirectoryIsFiltered(file.Directory, directoryFilter)) { continue; } AddFile(file); if (DateTime.Now - lastUpdate > timer) { lastUpdate = DateTime.Now; Updated?.Invoke(this, EventArgs.Empty); } } return; bool DirectoryIsFiltered(FileSystemInfo dir, IEnumerable <string> directoryFilters) { return(directoryFilters.Any( filter => dir.FullName.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))); } IEnumerable <FileInfo> GetFiles() { foreach (var file in filesToCheck) { if (extensions.Contains(PathUtil.GetExtension(file))) { FileInfo fileInfo; try { fileInfo = new FileInfo(file); } catch { continue; } yield return(fileInfo); } } } void AddFile(FileInfo file) { if (!file.Exists) { return; } var codeFile = CodeFile.Parse(file); TotalLineCount += codeFile.TotalLineCount; BlankLineCount += codeFile.BlankLineCount; CommentLineCount += codeFile.CommentLineCount; DesignerLineCount += codeFile.DesignerLineCount; var extension = file.Extension.ToLower(); LinesOfCodePerExtension.TryGetValue(extension, out var linesForExtensions); LinesOfCodePerExtension[extension] = linesForExtensions + codeFile.CodeLineCount; CodeLineCount += codeFile.CodeLineCount; if (codeFile.IsTestFile || file.Directory?.FullName.Contains("test", StringComparison.OrdinalIgnoreCase) == true) { TestCodeLineCount += codeFile.CodeLineCount; } } }