|
4 | 4 |
|
5 | 5 | use OndraM\CiDetector\CiDetector;
|
6 | 6 | use PHPStan\Command\ErrorFormatter\BaselineNeonErrorFormatter;
|
| 7 | +use PHPStan\Command\ErrorFormatter\BaselinePhpErrorFormatter; |
7 | 8 | use PHPStan\Command\ErrorFormatter\ErrorFormatter;
|
8 | 9 | use PHPStan\Command\ErrorFormatter\TableErrorFormatter;
|
9 | 10 | use PHPStan\Command\Symfony\SymfonyOutput;
|
|
28 | 29 | use function fopen;
|
29 | 30 | use function get_class;
|
30 | 31 | use function implode;
|
| 32 | +use function in_array; |
31 | 33 | use function is_array;
|
32 | 34 | use function is_bool;
|
33 | 35 | use function is_dir;
|
@@ -202,8 +204,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int
|
202 | 204 | return $inceptionResult->handleReturn(1, null);
|
203 | 205 | }
|
204 | 206 |
|
205 |
| - if ($baselineExtension !== 'neon') { |
206 |
| - $inceptionResult->getStdOutput()->getStyle()->error(sprintf('Baseline filename extension must be .neon, .%s was used instead.', $baselineExtension)); |
| 207 | + if (!in_array($baselineExtension, ['neon', 'php'], true)) { |
| 208 | + $inceptionResult->getStdOutput()->getStyle()->error(sprintf('Baseline filename extension must be .neon or .php, .%s was used instead.', $baselineExtension)); |
207 | 209 |
|
208 | 210 | return $inceptionResult->handleReturn(1, null);
|
209 | 211 | }
|
@@ -292,15 +294,20 @@ protected function execute(InputInterface $input, OutputInterface $output): int
|
292 | 294 | return $inceptionResult->handleReturn(1, $analysisResult->getPeakMemoryUsageBytes());
|
293 | 295 | }
|
294 | 296 |
|
295 |
| - $baselineFileDirectory = dirname($generateBaselineFile); |
296 |
| - $baselineErrorFormatter = new BaselineNeonErrorFormatter(new ParentDirectoryRelativePathHelper($baselineFileDirectory)); |
297 |
| - |
298 |
| - $existingBaselineContent = is_file($generateBaselineFile) ? FileReader::read($generateBaselineFile) : ''; |
299 |
| - |
300 | 297 | $streamOutput = $this->createStreamOutput();
|
301 | 298 | $errorConsoleStyle = new ErrorsConsoleStyle(new StringInput(''), $streamOutput);
|
302 | 299 | $baselineOutput = new SymfonyOutput($streamOutput, new SymfonyStyle($errorConsoleStyle));
|
303 |
| - $baselineErrorFormatter->formatErrors($analysisResult, $baselineOutput, $existingBaselineContent); |
| 300 | + $baselineFileDirectory = dirname($generateBaselineFile); |
| 301 | + $baselinePathHelper = new ParentDirectoryRelativePathHelper($baselineFileDirectory); |
| 302 | + |
| 303 | + if ($baselineExtension === 'php') { |
| 304 | + $baselineErrorFormatter = new BaselinePhpErrorFormatter($baselinePathHelper); |
| 305 | + $baselineErrorFormatter->formatErrors($analysisResult, $baselineOutput); |
| 306 | + } else { |
| 307 | + $baselineErrorFormatter = new BaselineNeonErrorFormatter($baselinePathHelper); |
| 308 | + $existingBaselineContent = is_file($generateBaselineFile) ? FileReader::read($generateBaselineFile) : ''; |
| 309 | + $baselineErrorFormatter->formatErrors($analysisResult, $baselineOutput, $existingBaselineContent); |
| 310 | + } |
304 | 311 |
|
305 | 312 | $stream = $streamOutput->getStream();
|
306 | 313 | rewind($stream);
|
|
0 commit comments