/**
* @param CodeBase $code_base
* A code base needs to be passed in because we require
* it to be initialized before any classes or files are
* loaded.
*
* @param string[] $file_path_list
* A set of files to expand with the set of dependencies
* on those files.
*
* @return string[]
* Get an expanded list of files and dependencies for
* the given file list
*/
public static function expandedFileList(CodeBase $code_base, array $file_path_list) : array
{
$file_count = count($file_path_list);
// We'll construct a set of files that we'll
// want to run an analysis on
$dependency_file_path_list = [];
foreach ($file_path_list as $i => $file_path) {
CLI::progress('dependencies', ($i + 1) / $file_count);
// Add the file itself to the list
$dependency_file_path_list[] = $file_path;
// Add any files that depend on this file
$dependency_file_path_list = array_merge($dependency_file_path_list, $code_base->dependencyListForFile($file_path));
}
return array_unique($dependency_file_path_list);
}