static void GetInputFiles(string path) { if (System.IO.File.Exists(path)) { var content = System.IO.File.ReadAllLines(path); CodeParser cp = new CodeParser(allowedExtensions); var resultStrings = cp.FindStrings(content); var files = new List <StringDefinition>(); var paths = new List <StringDefinition>(); StringDefinition file; foreach (var s in resultStrings) { file = null; foreach (var extension in allowedExtensions) { if (s.LineContent.ToUpper().EndsWith(extension.Extension)) { file = s; break; } } if (file == null) { paths.Add(s); } else { files.Add(s); } } var inputfiles = new List <InputFile>(); var strangeInputfiles = new List <InputFile>(); // Try to find for each file the path needed. foreach (var f in files) { var possiblePaths = paths.Where(p => (f.LineIndex - 5 <= p.LineIndex) && (p.LineIndex <= f.LineIndex)).OrderByDescending(p => p.LineIndex).ToList(); if (possiblePaths.Count == 1) { inputfiles.Add(new InputFile(possiblePaths[0].LineContent, f.LineContent)); } else { strangeInputfiles.Add(new InputFile(f.LineContent)); } } inputfiles = inputfiles.Distinct().ToList(); strangeInputfiles = strangeInputfiles.Distinct().ToList(); var difference = strangeInputfiles.Where(s => !inputfiles.Any(i => i.Filename == s.Filename)).ToList(); } }