Esempio n. 1
0
        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());
            }
        }
Esempio n. 2
0
 public AnalysisResult()
 {
     AnalysisOptions = new AnalysisOptions();
     Path = "";
     ElapsedMilliseconds = 0L;
     TotalFileCount = 0;
     TotalDirectoryCount = 0;
     IgnoredFileCount = 0;
     BinaryFileCount = 0;
 }
Esempio n. 3
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();
        }
Esempio n. 4
0
        private void UpdateStatus(string prefix, string message, AnalysisOptions options)
        {
            if (OnStatusUpdate == null) return;

            OnStatusUpdate(this, new AnalysisEventArgs(){Message = message, Prefix = prefix, Options = options});
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        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;
        }