private int AnalyzeDirectoryCommandHandler()

in src/Analyzer.Cli/CommandLineParser.cs [205:246]


        private int AnalyzeDirectoryCommandHandler(
            DirectoryInfo directoryPath,
            FileInfo configFilePath,
            ReportFormat reportFormat,
            FileInfo outputFilePath,
            bool includeNonSecurityRules,
            bool verbose,
            FileInfo customJsonRulesPath)
        {
            if (!directoryPath.Exists)
            {
                Console.Error.WriteLine("Invalid directory: {0}", directoryPath);
                return (int)ExitCode.ErrorInvalidPath;
            }

            var setupResult = SetupAnalysis(configFilePath, directoryPath, reportFormat, outputFilePath, includeNonSecurityRules, verbose, customJsonRulesPath);
            if (setupResult != ExitCode.Success)
            {
                return (int)setupResult;
            }

            // Find files to analyze
            var filesToAnalyze = TemplateDiscovery.DiscoverTemplatesAndParametersInDirectory(directoryPath, logger);

            // Log root directory info to be analyzed
            Console.WriteLine($"{Environment.NewLine}{Environment.NewLine}Directory: {directoryPath}");

            var exitCodes = new List<ExitCode>();
            foreach (var templateAndParameters in filesToAnalyze)
            {
                exitCodes.Add(AnalyzeTemplate(templateAndParameters));
            }

            int numOfFilesAnalyzed = exitCodes.Where(x => x == ExitCode.Success || x == ExitCode.Violation).Count();
            Console.WriteLine($"{Environment.NewLine}Analyzed {numOfFilesAnalyzed} {(numOfFilesAnalyzed == 1 ? "file" : "files")} in the directory specified.");

            var exitCode = AnalyzeExitCodes(exitCodes);

            FinishAnalysis();

            return (int)exitCode;
        }