Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fatal error when using Gitblame report from subdirectory when ruleset has basepath #31

Closed
jrfnl opened this issue Nov 8, 2023 · 0 comments · Fixed by #67
Closed

Fatal error when using Gitblame report from subdirectory when ruleset has basepath #31

jrfnl opened this issue Nov 8, 2023 · 0 comments · Fixed by #67

Comments

@jrfnl
Copy link
Member

jrfnl commented Nov 8, 2023

Repost from squizlabs/PHP_CodeSniffer#3854:

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:

  1. Change into the src directory of the PHPCS project
  2. Run phpcs -psl . --report=gitblame
  3. 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 squizlabs/PHP_CodeSniffer#3809
Standard PHPCS native phpcs.xml.dist
Install type git clone

Additional context

This issue is loosely related to squizlabs/PHP_CodeSniffer#3809.


PR upcoming.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant