From 03ae329837fe68c740bb7f5a6f790da6b3e50b39 Mon Sep 17 00:00:00 2001 From: Andrey Savchenko Date: Tue, 8 Sep 2020 20:30:31 +0300 Subject: [PATCH 1/2] Colorized file name and line in console output Fixes #4129 --- src/Psalm/Report/ConsoleReport.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Psalm/Report/ConsoleReport.php b/src/Psalm/Report/ConsoleReport.php index bbd19e39265..7251ae4b4fe 100644 --- a/src/Psalm/Report/ConsoleReport.php +++ b/src/Psalm/Report/ConsoleReport.php @@ -6,8 +6,10 @@ use Psalm\Internal\Analyzer\IssueData; use Psalm\Report; +use function basename; use function get_cfg_var; use function ini_get; +use function strlen; use function strtr; use function substr; @@ -118,6 +120,15 @@ private function getFileReference($data): string return $reference; } + $file_basename = basename($data->file_name); + $file_path = substr($data->file_name, 0, -strlen($file_basename)); + + $reference = $file_path + . "\e[1;31m" + . $file_basename . ':' . $data->line_from . ':' . $data->column_from + . "\e[0m" + ; + if (null === $this->link_format) { // if xdebug is not enabled, use `get_cfg_var` to get the value directly from php.ini $this->link_format = ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format') @@ -127,6 +138,7 @@ private function getFileReference($data): string $link = strtr($this->link_format, ['%f' => $data->file_path, '%l' => $data->line_from]); // $reference = $data->file_name . ':' . $data->line_from . ':' . $data->column_from; + return "\033]8;;" . $link . "\033\\" . $reference . "\033]8;;\033\\"; } } From ec1571d26135712ffcc60930784bdc237f4da17f Mon Sep 17 00:00:00 2001 From: Bruce Weirdan Date: Sun, 28 Nov 2021 01:10:21 +0200 Subject: [PATCH 2/2] Adjust link test to account for colors --- src/Psalm/Report/ConsoleReport.php | 4 ++-- tests/ReportOutputTest.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Psalm/Report/ConsoleReport.php b/src/Psalm/Report/ConsoleReport.php index 7251ae4b4fe..cd0783b05f3 100644 --- a/src/Psalm/Report/ConsoleReport.php +++ b/src/Psalm/Report/ConsoleReport.php @@ -124,9 +124,9 @@ private function getFileReference($data): string $file_path = substr($data->file_name, 0, -strlen($file_basename)); $reference = $file_path - . "\e[1;31m" + . "\033[1;31m" . $file_basename . ':' . $data->line_from . ':' . $data->column_from - . "\e[0m" + . "\033[0m" ; if (null === $this->link_format) { diff --git a/tests/ReportOutputTest.php b/tests/ReportOutputTest.php index 232ef2b3f16..293dda96827 100644 --- a/tests/ReportOutputTest.php +++ b/tests/ReportOutputTest.php @@ -1079,7 +1079,7 @@ public function testConsoleReportWithLinks(): void $output = IssueBuffer::getOutput(IssueBuffer::getIssuesData(), $console_report_options); $this->assertStringContainsString( - "\033]8;;file://somefile.php#L3\033\\somefile.php:3:10\033]8;;\033\\", + "\033]8;;file://somefile.php#L3\033\\\033[1;31msomefile.php:3:10\033[0m\033]8;;\033\\", $output ); }