Exemplo n.º 1
0
        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;
            }


        }
Exemplo n.º 2
0
        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;
                    }
                }
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
                }
            }
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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;
                }
            }
        }