From 4a3658a6880945ba63a74c76421d29aa2e3e1f76 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Thu, 13 Jul 2023 10:30:06 +0200 Subject: [PATCH] Gitblame: fix fatal error on `chdir()` when `basepath` is set and phpcs is run from subdir The `Reporter::prepareFileReport()` method strips the `basepath` off the file name for the `$report['filename']`. https://github.com/squizlabs/PHP_CodeSniffer/blob/276f68cc74a3e4e1855bab6d01f0089337d00ae0/src/Reporter.php#L337 While this is fine in most cases, for "blame" reports, the full path is needed. This changes the path passed to the `getBlameContent()` method in subclasses of the `VersionControl` class to the full path, which fixes the fatal error for the `Gitblame` report (and probably similar/related errors in the `Hgblame` and the `Svnblame` reports, but I don't have any repos to test this on). Fixes 3854 --- src/Reports/VersionControl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Reports/VersionControl.php b/src/Reports/VersionControl.php index 0f414567dc..5a6e7eb455 100644 --- a/src/Reports/VersionControl.php +++ b/src/Reports/VersionControl.php @@ -40,7 +40,7 @@ abstract class VersionControl implements Report */ public function generateFileReport($report, File $phpcsFile, $showSources=false, $width=80) { - $blames = $this->getBlameContent($report['filename']); + $blames = $this->getBlameContent($phpcsFile->getFilename()); $authorCache = []; $praiseCache = [];