-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
PHPCSStandards/PHP_CodeSniffer
#67Milestone
Description
Describe the bug
When basepath is set in a custom ruleset AND PHPCS is subsequently run from within a subdirectory of the project AND the Gitblame report is requested, a fatal error happens.
As far as I can see, this is due to the $filename which is being passed to Gitblame::getBlameContent() not being the full path to the file, but the path with the basename stripped off.
To reproduce
Steps to reproduce the behavior with PHPCS itself:
- Change into the
srcdirectory of the PHPCS project - Run
phpcs -psl . --report=gitblame - See the following error message displayed
PHP_CodeSniffer version 3.7.2 (stable) by Squiz (http://www.squiz.net)
Fatal error: Uncaught PHP_CodeSniffer\Exceptions\RuntimeException: chdir(): No such file or directory (errno 2) in path/to/src/Reports/Gitblame.php on line 72 in path/to/src/Runner.php:608
Stack trace:
#0 [internal function]: PHP_CodeSniffer\Runner->handleErrors(2, 'chdir(): No suc...', '...', 72)
#1 path/to/src/Reports/Gitblame.php(72): chdir('src')
#2 path/to/src/Reports/VersionControl.php(43): PHP_CodeSniffer\Reports\Gitblame->getBlameContent('src\\Config.php')
#3 path/to/src/Reporter.php(285): PHP_CodeSniffer\Reports\VersionControl->generateFileReport(Array, Object(PHP_CodeSniffer\Files\LocalFile), true, 150)
#4 path/to/src/Runner.php(700): PHP_CodeSniffer\Reporter->cacheFileReport(Object(PHP_CodeSniffer\Files\LocalFile), Object(PHP_CodeSniffer\Config))
#5 path/to/src/Runner.php(438): PHP_CodeSniffer\Runner->processFile(Object(PHP_CodeSniffer\Files\LocalFile))
#6 path/to/src/Runner.php(116): PHP_CodeSniffer\Runner->run()
#7 path/to/bin/phpcs(18): PHP_CodeSniffer\Runner->runPHPCS()
#8 {main}
thrown in path/to/src/Runner.php on line 608
Exit code is 255
Expected behavior
No fatal error and the git blame report is displayed correctly
Versions (please complete the following information)
| Operating System | Windows 10 |
| PHP version | 8.2.7 (but not relevant) |
| PHP_CodeSniffer version | bleeding edge including the fix from #3809 |
| Standard | PHPCS native phpcs.xml.dist |
| Install type | git clone |
Additional context
This issue is loosely related to #3809.
Please confirm:
- I have searched the issue list and am not opening a duplicate issue.
- I confirm that this bug is a bug in PHP_CodeSniffer and not in one of the external standards.
- I have verified the issue still exists in the
masterbranch of PHP_CodeSniffer.