private static void Execute(string[] args) { var options = new AnalysisOptions(); try { var result = options.CliParse(args); if (result.Successful == false || result.ShowHelp) { foreach (var message in result.CliParseMessages) { Console.WriteLine(message); } Console.WriteLine(options.GetHelpInfo()); return; } var analysis = new lib.locr(); if (options.Verbosity > 0) analysis.OnStatusUpdate += analysis_OnStatusUpdate; var screen = analysis.Analyse(options); // reset screen update line Console.Write("\r "); Console.Write("\r"); Console.WriteLine(screen); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(options.GetHelpInfo()); } }
public AnalysisResult() { AnalysisOptions = new AnalysisOptions(); Path = ""; ElapsedMilliseconds = 0L; TotalFileCount = 0; TotalDirectoryCount = 0; IgnoredFileCount = 0; BinaryFileCount = 0; }
public string Analyse(AnalysisOptions options) { var sw = new Stopwatch(); sw.Start(); var analysisResult = new AnalysisResult {Path = options.Path}; if (File.Exists(analysisResult.Path)) { analysisResult.Add(AnalyseFile(analysisResult.Path, options)); } else { analysisResult.Merge(AnalyseDirectory(analysisResult.Path, options)); } sw.Stop(); analysisResult.ElapsedMilliseconds = sw.ElapsedMilliseconds; return analysisResult.ToString(); }
private void UpdateStatus(string prefix, string message, AnalysisOptions options) { if (OnStatusUpdate == null) return; OnStatusUpdate(this, new AnalysisEventArgs(){Message = message, Prefix = prefix, Options = options}); }
private AnalysisExtensionSummary AnalyseFile(string filePath, AnalysisOptions options) { AnalysisExtensionSummary result = new AnalysisExtensionSummary(); try { if (!options.ShouldScanFile(filePath)) { UpdateStatus("Skipping file:", filePath, options); result.Scanned = false; // marked as skipped file return result; } UpdateStatus("Analysing file:", filePath, options); var str = File.ReadAllText(filePath); // Scan file stream result = AnalyseString(str); result.Extension = Path.GetExtension(filePath) ?? ""; result.Extension = result.Extension.ToLowerInvariant(); if (result.Extension.Length == 0) result.Extension = "(blank)"; } catch (Exception ex) { UpdateStatus("Skipping file - Error reading:", filePath, options); result.Scanned = false; // marked as skipped file } return result; }
private AnalysisResult AnalyseDirectory(string path, AnalysisOptions options) { var analysisResult = new AnalysisResult(); UpdateStatus("Analysing directory:", path, options); analysisResult.Path = path; foreach (var item in Directory.EnumerateFiles(path)) { var analysis = AnalyseFile(item, options); analysisResult.Add(analysis); } if (!options.Recurse) return analysisResult; foreach (var item in Directory.EnumerateDirectories(path)) { if (!options.ShouldScanDirectory(item)) { UpdateStatus("Skipping directory:", item, options); continue; } var directoryAnalysis = AnalyseDirectory(item, options); analysisResult.Merge(directoryAnalysis); } return analysisResult; }