From 8d6b51eac4d1c9a7b23d004bda2215b0ea552b3d Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 7 Oct 2026 23:21:32 +0200 Subject: [PATCH] Print run footer with files, time and memory to match blink output --- .../EasyCodingStandardApplication.php | 16 +++++++++---- src/Console/Command/CheckCommand.php | 23 ++++++++++++++++++- src/Reporter/ProcessedFileReporter.php | 2 +- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/Application/EasyCodingStandardApplication.php b/src/Application/EasyCodingStandardApplication.php index 7c829c28f07..7a7c4cde794 100644 --- a/src/Application/EasyCodingStandardApplication.php +++ b/src/Application/EasyCodingStandardApplication.php @@ -43,7 +43,7 @@ public function __construct( } /** - * @return array{coding_standard_errors?: CodingStandardError[], file_diffs?: FileDiff[], system_errors?: SystemError[]|string[], system_errors_count?: int} + * @return array{coding_standard_errors?: CodingStandardError[], file_diffs?: FileDiff[], system_errors?: SystemError[]|string[], system_errors_count?: int, files_count?: int} */ public function run(Configuration $configuration): array { @@ -66,7 +66,9 @@ public function run(Configuration $configuration): array $filesCount = count($filePaths); if ($filesCount === 0) { - return []; + return [ + Bridge::FILES_COUNT => 0, + ]; } if ($configuration->isParallel()) { @@ -105,17 +107,21 @@ public function run(Configuration $configuration): array } // mimics see https://github.com/phpstan/phpstan-src/commit/9124c66dcc55a222e21b1717ba5f60771f7dda92#diff-387b8f04e0db7a06678eb52ce0c0d0aff73e0d7d8fc5df834d0a5fbec198e5daR139 - return $this->parallelFileProcessor->check( + $errorsAndDiffs = $this->parallelFileProcessor->check( $schedule, $mainScript, $postFileCallback, $configuration->getConfig(), $configuration ); + } else { + // process found files by each processors + $errorsAndDiffs = $this->processFoundFiles($filePaths, $configuration); } - // process found files by each processors - return $this->processFoundFiles($filePaths, $configuration); + $errorsAndDiffs[Bridge::FILES_COUNT] = $filesCount; + + return $errorsAndDiffs; } /** diff --git a/src/Console/Command/CheckCommand.php b/src/Console/Command/CheckCommand.php index 2337b619910..963bf2874ce 100644 --- a/src/Console/Command/CheckCommand.php +++ b/src/Console/Command/CheckCommand.php @@ -13,7 +13,9 @@ use Symplify\EasyCodingStandard\Configuration\ConfigurationFactory; use Symplify\EasyCodingStandard\Console\ExitCode; use Symplify\EasyCodingStandard\Console\Output\ConsoleOutputFormatter; +use Symplify\EasyCodingStandard\Console\Style\EasyCodingStandardStyle; use Symplify\EasyCodingStandard\MemoryLimitter; +use Symplify\EasyCodingStandard\Parallel\ValueObject\Bridge; use Symplify\EasyCodingStandard\Reporter\ProcessedFileReporter; final readonly class CheckCommand implements CommandInterface, DefaultCommandInterface @@ -26,6 +28,7 @@ public function __construct( private ConfigurationFactory $configurationFactory, private BlinkRunner $blinkRunner, private BlinkConfigDumper $blinkConfigDumper, + private EasyCodingStandardStyle $easyCodingStandardStyle, ) { } @@ -106,7 +109,25 @@ public function run( $this->memoryLimitter->adjust($configuration); + $startTime = microtime(true); $errorsAndDiffs = $this->easyCodingStandardApplication->run($configuration); - return $this->processedFileReporter->report($errorsAndDiffs, $configuration); + $exitCode = $this->processedFileReporter->report($errorsAndDiffs, $configuration); + + if ($configuration->getOutputFormat() === ConsoleOutputFormatter::NAME) { + $this->printRunFooter($errorsAndDiffs[Bridge::FILES_COUNT] ?? 0, $startTime); + } + + return $exitCode; + } + + private function printRunFooter(int $filesCount, float $startTime): void + { + $elapsedMilliseconds = (int) round((microtime(true) - $startTime) * 1000); + $peakMemoryMegabytes = (int) round(memory_get_peak_usage(true) / 1024 / 1024); + + $this->easyCodingStandardStyle->newLine(); + $this->easyCodingStandardStyle->writeln( + sprintf(' // %d files · %dms · %d MB', $filesCount, $elapsedMilliseconds, $peakMemoryMegabytes) + ); } } diff --git a/src/Reporter/ProcessedFileReporter.php b/src/Reporter/ProcessedFileReporter.php index cf06bc64fae..e8c10ef96a1 100644 --- a/src/Reporter/ProcessedFileReporter.php +++ b/src/Reporter/ProcessedFileReporter.php @@ -21,7 +21,7 @@ public function __construct( } /** - * @param array{system_errors?: SystemError[]|string[], file_diffs?: FileDiff[], coding_standard_errors?: CodingStandardError[], system_errors_count?: int} $errorsAndDiffs + * @param array{system_errors?: SystemError[]|string[], file_diffs?: FileDiff[], coding_standard_errors?: CodingStandardError[], system_errors_count?: int, files_count?: int} $errorsAndDiffs * @return ExitCode::* */ public function report(array $errorsAndDiffs, Configuration $configuration): int