diff --git a/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php b/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php index 86a1160cc69..6600f6e3ca9 100644 --- a/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php +++ b/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php @@ -316,9 +316,7 @@ public function __construct( ); foreach ($file_paths as $file_path) { - if ($this->config->isInProjectDirs($file_path)) { - $this->addProjectFile($file_path); - } + $this->addProjectFile($file_path); } } @@ -330,9 +328,7 @@ public function __construct( ); foreach ($file_paths as $file_path) { - if ($this->config->isInExtraDirs($file_path)) { - $this->addExtraFile($file_path); - } + $this->addExtraFile($file_path); } } @@ -1057,20 +1053,18 @@ public function checkDir(string $dir_name): void private function checkDirWithConfig(string $dir_name, Config $config, bool $allow_non_project_files = false): void { $file_extensions = $config->getFileExtensions(); - $directory_filter = $allow_non_project_files ? null : [$this->config, 'isInProjectDirs']; + $filter = $allow_non_project_files ? null : [$this->config, 'isInProjectDirs']; $file_paths = $this->file_provider->getFilesInDir( $dir_name, $file_extensions, - $directory_filter + $filter ); $files_to_scan = []; foreach ($file_paths as $file_path) { - if ($allow_non_project_files || $config->isInProjectDirs($file_path)) { - $files_to_scan[$file_path] = $file_path; - } + $files_to_scan[$file_path] = $file_path; } $this->codebase->addFilesToAnalyze($files_to_scan); diff --git a/src/Psalm/Internal/Provider/FakeFileProvider.php b/src/Psalm/Internal/Provider/FakeFileProvider.php index d2ffb991080..5d506bdeb2d 100644 --- a/src/Psalm/Internal/Provider/FakeFileProvider.php +++ b/src/Psalm/Internal/Provider/FakeFileProvider.php @@ -57,13 +57,13 @@ public function registerFile(string $file_path, string $file_contents): void /** * @param array $file_extensions - * @param null|callable(string):bool $directory_filter + * @param null|callable(string):bool $filter * * @return list */ - public function getFilesInDir(string $dir_path, array $file_extensions, callable $directory_filter = null): array + public function getFilesInDir(string $dir_path, array $file_extensions, callable $filter = null): array { - $file_paths = parent::getFilesInDir($dir_path, $file_extensions, $directory_filter); + $file_paths = parent::getFilesInDir($dir_path, $file_extensions, $filter); foreach ($this->fake_files as $file_path => $_) { if (strpos(strtolower($file_path), strtolower($dir_path)) === 0) { diff --git a/src/Psalm/Internal/Provider/FileProvider.php b/src/Psalm/Internal/Provider/FileProvider.php index 161b9dc91f4..6d85e1458e9 100644 --- a/src/Psalm/Internal/Provider/FileProvider.php +++ b/src/Psalm/Internal/Provider/FileProvider.php @@ -118,11 +118,11 @@ public function fileExists(string $file_path): bool /** * @param array $file_extensions - * @param null|callable(string):bool $directory_filter + * @param null|callable(string):bool $filter * * @return list */ - public function getFilesInDir(string $dir_path, array $file_extensions, callable $directory_filter = null): array + public function getFilesInDir(string $dir_path, array $file_extensions, callable $filter = null): array { $file_paths = []; @@ -131,12 +131,18 @@ public function getFilesInDir(string $dir_path, array $file_extensions, callable FilesystemIterator::CURRENT_AS_PATHNAME | FilesystemIterator::SKIP_DOTS ); - if ($directory_filter !== null) { + if ($filter !== null) { $iterator = new RecursiveCallbackFilterIterator( $iterator, /** @param mixed $_ */ - function (string $current, $_, RecursiveIterator $iterator) use ($directory_filter): bool { - return !$iterator->hasChildren() || $directory_filter($current . DIRECTORY_SEPARATOR); + function (string $current, $_, RecursiveIterator $iterator) use ($filter): bool { + if ($iterator->hasChildren()) { + $path = $current . DIRECTORY_SEPARATOR; + } else { + $path = $current; + } + + return $filter($path); } ); }