private void VisitFiles(string directoryPath) { foreach (var file in _directoryReader.EnumerateFiles(directoryPath)) { VisitFile(file); var extension = _pathReader.GetExtension(file); if (_defaultRepositoryVisitorFilter.IsSolutionFile(extension)) { VisitSolution(file); } else if (_defaultRepositoryVisitorFilter.IsProjectFile(extension)) { VisitProject(file); } else if (_defaultRepositoryVisitorFilter.IsSourceFile(extension)) { VisitSourceFile(file); } } foreach (var directory in _directoryReader.EnumerateDirectories(directoryPath)) { VisitFiles(directory); } }
public IParser <Solution> CreateParser(string path) { var extension = _pathReader.GetExtension(path); switch (extension) { case ".sln": return(new SolutionParser(_fileReader, _directoryReader, _pathReader)); default: throw new NotImplementedException("Parser not implemented for this type of solution."); } }
public IParser <Project> CreateParser(string path) { var extension = _pathReader.GetExtension(path); switch (extension) { case ".csproj": return(new CSharpProjectParser(_repositoryRegistry, _xmlReader, _pathReader)); case ".vcxproj": return(new VCXProjectParser(_repositoryRegistry, _xmlReader, _pathReader)); case ".vcproj": return(new VCProjectParser(_repositoryRegistry, _xmlReader, _pathReader)); default: throw new NotImplementedException("Parser not implemented for this type of project."); } }
public IEnumerable <Problem> FindProblems(CodeBase codeBase) { if (_analyzers.Count == 0) { yield break; } _problems.Clear(); Parallel.ForEach(codeBase.SourceFiles.Select(x => x.Path).Where(p => _pathReader.GetExtension(p) == ".cs"), (path) => { var content = _fileReader.ReadAllText(path); SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(content); CompilationUnitSyntax root = syntaxTree.GetCompilationUnitRoot(); Visit(root); }); foreach (var problem in _problems) { yield return(problem); } }