def self.actually_run_checks(checks, check_runner, app_tree, tracker)
threads = []
results = []
parallel = tracker.options[:parallel_checks]
error_mutex = Mutex.new
checks.each do |c|
check_name = get_check_name c
Brakeman.notify " - #{check_name}"
if parallel
threads << Thread.new do
self.run_a_check(c, error_mutex, app_tree, tracker)
end
else
results << self.run_a_check(c, error_mutex, app_tree, tracker)
end
check_runner.checks_run << check_name[5..-1]
end
threads.each { |t| t.join }
Brakeman.notify "Checks finished, collecting results..."
if parallel
threads.each do |thread|
thread.value.each do |warning|
check_runner.add_warning warning
end
end
else
results.each do |warnings|
warnings.each do |warning|
check_runner.add_warning warning
end
end
end
check_runner
end