def self.scan options
notify "Loading scanner..."
begin
require 'brakeman/scanner'
rescue LoadError
raise NoBrakemanError, "Cannot find lib/ directory."
end
add_external_checks options
scanner = Scanner.new options
tracker = scanner.tracker
check_for_missing_checks options[:run_checks], options[:skip_checks], options[:enable_checks]
notify "Processing application in #{tracker.app_path}"
scanner.process
if options[:parallel_checks]
notify "Running checks in parallel..."
else
notify "Runnning checks..."
end
tracker.run_checks
self.filter_warnings tracker, options
if options[:output_files]
notify "Generating report..."
write_report_to_files tracker, options[:output_files]
elsif options[:print_report]
notify "Generating report..."
write_report_to_formats tracker, options[:output_formats]
end
tracker
end