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;
}