@@ -55,6 +55,7 @@ protected function configure(): void
5555 new InputOption ('autoload-file ' , 'a ' , InputOption::VALUE_REQUIRED , 'Project \'s additional autoload file path ' ),
5656 new InputOption ('error-format ' , null , InputOption::VALUE_REQUIRED , 'Format in which to print the result of the analysis ' , null ),
5757 new InputOption ('generate-baseline ' , null , InputOption::VALUE_OPTIONAL , 'Path to a file where the baseline should be saved ' , false ),
58+ new InputOption ('allow-empty-baseline ' , null , InputOption::VALUE_NONE , 'Do not error out when the generated baseline is empty ' ),
5859 new InputOption ('memory-limit ' , null , InputOption::VALUE_REQUIRED , 'Memory limit for analysis ' ),
5960 new InputOption ('xdebug ' , null , InputOption::VALUE_NONE , 'Allow running with XDebug for debugging purposes ' ),
6061 new InputOption ('fix ' , null , InputOption::VALUE_NONE , 'Launch PHPStan Pro ' ),
@@ -102,6 +103,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int
102103 $ generateBaselineFile = 'phpstan-baseline.neon ' ;
103104 }
104105
106+ $ allowEmptyBaseline = (bool ) $ input ->getOption ('allow-empty-baseline ' );
107+
105108 if (
106109 !is_array ($ paths )
107110 || (!is_string ($ memoryLimit ) && $ memoryLimit !== null )
@@ -132,6 +135,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int
132135 return 1 ;
133136 }
134137
138+ if ($ generateBaselineFile === null && $ allowEmptyBaseline ) {
139+ $ inceptionResult ->getStdOutput ()->getStyle ()->error ('You must pass the --generate-baseline option alongside --allow-empty-baseline. ' );
140+ return $ inceptionResult ->handleReturn (1 );
141+ }
142+
135143 $ errorOutput = $ inceptionResult ->getErrorOutput ();
136144 $ obsoleteDockerImage = $ _SERVER ['PHPSTAN_OBSOLETE_DOCKER_IMAGE ' ] ?? 'false ' ;
137145 if ($ obsoleteDockerImage === 'true ' ) {
@@ -239,7 +247,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
239247 }
240248
241249 if ($ generateBaselineFile !== null ) {
242- if (!$ analysisResult ->hasErrors ()) {
250+ if (!$ allowEmptyBaseline && ! $ analysisResult ->hasErrors ()) {
243251 $ inceptionResult ->getStdOutput ()->getStyle ()->error ('No errors were found during the analysis. Baseline could not be generated. ' );
244252
245253 return $ inceptionResult ->handleReturn (1 );
0 commit comments