private void AnalyzeSourceFiles() { IIncludeResolveStrategy includeResolveStrategy = GetIncludeResolveStrategy(); _analyzedSourceFiles = 0; foreach (SourceFile sourceFile in _sourceDirectory.SourceFiles) { sourceFile.Analyze(includeResolveStrategy); _analyzedSourceFiles++; UpdateFileProgress(_analyzedSourceFiles, _sourceDirectory.SourceFiles.Count); } }
public void Analyze(IIncludeResolveStrategy includeResolveStrategy) { _includes.Clear(); if (_fileInfo.Exists) { using (FileStream stream = _fileInfo.OpenRead()) { StreamReader sr = new StreamReader(stream); string line; while ((line = sr.ReadLine()) != null) { string relativeIncludeFilename = ExtractFileFromIncludeStatement(line); ResolveIncludeFile(relativeIncludeFilename, includeResolveStrategy); } } } }
internal void ResolveIncludeFile(string relativeIncludeFilename, IIncludeResolveStrategy includeResolveStrategy) { if (relativeIncludeFilename != null) { IList <IncludeCandidate> candidates = includeResolveStrategy.GetCandidates(relativeIncludeFilename); if (candidates.Count > 1) { AmbiguousIncludes.Add(relativeIncludeFilename); } IList <string> resolvedIncludes = includeResolveStrategy.Resolve(_fileInfo.FullName, relativeIncludeFilename, candidates); foreach (string resolvedInclude in resolvedIncludes) { _includes.Add(resolvedInclude); } if (resolvedIncludes.Count == 0) { _unresolvedIncludes.Add(relativeIncludeFilename); } } }