-
Notifications
You must be signed in to change notification settings - Fork 532
feat(analyze): add an option to allow generating empty baseline #776
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,6 +55,7 @@ protected function configure(): void | |
new InputOption('autoload-file', 'a', InputOption::VALUE_REQUIRED, 'Project\'s additional autoload file path'), | ||
new InputOption('error-format', null, InputOption::VALUE_REQUIRED, 'Format in which to print the result of the analysis', null), | ||
new InputOption('generate-baseline', null, InputOption::VALUE_OPTIONAL, 'Path to a file where the baseline should be saved', false), | ||
new InputOption('allow-empty-baseline', null, InputOption::VALUE_NONE, 'Do not error out when the generated baseline is empty'), | ||
new InputOption('memory-limit', null, InputOption::VALUE_REQUIRED, 'Memory limit for analysis'), | ||
new InputOption('xdebug', null, InputOption::VALUE_NONE, 'Allow running with XDebug for debugging purposes'), | ||
new InputOption('fix', null, InputOption::VALUE_NONE, 'Launch PHPStan Pro'), | ||
|
@@ -102,6 +103,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int | |
$generateBaselineFile = 'phpstan-baseline.neon'; | ||
} | ||
|
||
$allowEmptyBaseline = (bool) $input->getOption('allow-empty-baseline'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This set to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. I'm not very satisfied with the error message, if you have a better idea... |
||
|
||
if ( | ||
!is_array($paths) | ||
|| (!is_string($memoryLimit) && $memoryLimit !== null) | ||
|
@@ -132,6 +135,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int | |
return 1; | ||
} | ||
|
||
if ($generateBaselineFile === null && $allowEmptyBaseline) { | ||
$inceptionResult->getStdOutput()->getStyle()->error('You must pass the --generate-baseline option alongside --allow-empty-baseline.'); | ||
return $inceptionResult->handleReturn(1); | ||
} | ||
|
||
$errorOutput = $inceptionResult->getErrorOutput(); | ||
$obsoleteDockerImage = $_SERVER['PHPSTAN_OBSOLETE_DOCKER_IMAGE'] ?? 'false'; | ||
if ($obsoleteDockerImage === 'true') { | ||
|
@@ -239,7 +247,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int | |
} | ||
|
||
if ($generateBaselineFile !== null) { | ||
if (!$analysisResult->hasErrors()) { | ||
if (!$allowEmptyBaseline && !$analysisResult->hasErrors()) { | ||
$inceptionResult->getStdOutput()->getStyle()->error('No errors were found during the analysis. Baseline could not be generated.'); | ||
|
||
return $inceptionResult->handleReturn(1); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is missing a default
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can't set a default on an input option which has no value.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh right, haven't realized that 👍