コード例 #1
0
        private void AddLoadedProjectToRoot(ProjectSubject project, IReporter reporter, int totalProjectsCount)
        {
            int numberOfLoadedProjects;

            lock (rootWriteLock)
            {
                root.SetChildren(root.Children.Add(project));
                numberOfLoadedProjects = root.Children.Count;
            }

            reporter.Report($"Loaded projects {numberOfLoadedProjects}/{totalProjectsCount}");
        }
コード例 #2
0
        private async Task LoadChunkOfProjects(List <Project> projects, IReporter reporter, int totalProjectsCount)
        {
            foreach (Project project in projects)
            {
                if (string.IsNullOrEmpty(project.FilePath) ||
                    (!string.Equals(project.Language, "csharp", StringComparison.OrdinalIgnoreCase) &&
                     !string.Equals(project.Language, "c#", StringComparison.OrdinalIgnoreCase)))
                {
                    continue;
                }

                var projectSubject = new ProjectSubject(project);
                projectSubject.SetParent(root);

                foreach (Document document in project.Documents)
                {
                    if (document.SourceCodeKind != SourceCodeKind.Regular)
                    {
                        continue;
                    }

                    var documentSubject = new DocumentSubject(document);
                    documentSubject.SetParent(projectSubject);

                    await documentSubject.LoadAsync();

                    CategoriseDocument(documentSubject);

                    filesCategory.AddSubject(documentSubject);
                    projectSubject.SetChildren(projectSubject.Children.Add(documentSubject));
                }

                projectsCategory.AddSubject(projectSubject);
                AddLoadedProjectToRoot(projectSubject, reporter, totalProjectsCount);
            }
        }