Skip to content

Commit 1af6272

Browse files
committed
Revert "Add --ignore-new-errors analyse command option"
This reverts commit 389b6d1.
1 parent 389b6d1 commit 1af6272

File tree

10 files changed

+61
-94
lines changed

10 files changed

+61
-94
lines changed

src/Analyser/Ignore/IgnoredErrorHelperResult.php

Lines changed: 15 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,12 @@ public function process(
5050
bool $onlyFiles,
5151
array $analysedFiles,
5252
bool $hasInternalErrors,
53-
bool $generateBaseline,
54-
bool $ignoreNewErrors,
5553
): IgnoredErrorHelperProcessedResult
5654
{
57-
// if we are generating the baseline, we dont want ignore Errors configuration to affect the errors we output
58-
$unmatchedIgnoredErrors = $generateBaseline ? [] : $this->ignoreErrors;
55+
$unmatchedIgnoredErrors = $this->ignoreErrors;
5956
$stringErrors = [];
6057

61-
$processIgnoreError = function (Error $error, int $i, $ignore) use ($generateBaseline, &$unmatchedIgnoredErrors, &$stringErrors): bool {
58+
$processIgnoreError = function (Error $error, int $i, $ignore) use (&$unmatchedIgnoredErrors, &$stringErrors): bool {
6259
$shouldBeIgnored = false;
6360
if (is_string($ignore)) {
6461
$shouldBeIgnored = IgnoredError::shouldIgnore($this->fileHelper, $error, $ignore, null, null);
@@ -68,8 +65,7 @@ public function process(
6865
} else {
6966
if (isset($ignore['path'])) {
7067
$shouldBeIgnored = IgnoredError::shouldIgnore($this->fileHelper, $error, $ignore['message'] ?? null, $ignore['identifier'] ?? null, $ignore['path']);
71-
// only ignore errors when not generating the baseline, because it need to contain all errors
72-
if ($shouldBeIgnored && !$generateBaseline) {
68+
if ($shouldBeIgnored) {
7369
if (isset($ignore['count'])) {
7470
$realCount = $unmatchedIgnoredErrors[$i]['realCount'] ?? 0;
7571
$realCount++;
@@ -119,12 +115,12 @@ public function process(
119115
'Error message "%s" cannot be ignored, use excludePaths instead.',
120116
$error->getMessage(),
121117
);
122-
return false;
118+
return true;
123119
}
124-
return true;
120+
return false;
125121
}
126122

127-
return false;
123+
return true;
128124
};
129125

130126
$ignoredErrors = [];
@@ -134,16 +130,12 @@ public function process(
134130
foreach ($this->ignoreErrorsByFile[$filePath] as $ignoreError) {
135131
$i = $ignoreError['index'];
136132
$ignore = $ignoreError['ignoreError'];
137-
$isIgnoreMatch = $processIgnoreError($error, $i, $ignore);
138-
if (!$isIgnoreMatch) {
139-
continue;
140-
}
141-
142-
if (!$generateBaseline) {
133+
$result = $processIgnoreError($error, $i, $ignore);
134+
if (!$result) {
143135
unset($errors[$errorIndex]);
144136
$ignoredErrors[] = [$error, $ignore];
137+
continue 2;
145138
}
146-
continue 2;
147139
}
148140
}
149141

@@ -154,16 +146,12 @@ public function process(
154146
foreach ($this->ignoreErrorsByFile[$normalizedTraitFilePath] as $ignoreError) {
155147
$i = $ignoreError['index'];
156148
$ignore = $ignoreError['ignoreError'];
157-
$isIgnoreMatch = $processIgnoreError($error, $i, $ignore);
158-
if (!$isIgnoreMatch) {
159-
continue;
160-
}
161-
162-
if (!$generateBaseline) {
149+
$result = $processIgnoreError($error, $i, $ignore);
150+
if (!$result) {
163151
unset($errors[$errorIndex]);
164152
$ignoredErrors[] = [$error, $ignore];
153+
continue 2;
165154
}
166-
continue 2;
167155
}
168156
}
169157
}
@@ -172,24 +160,13 @@ public function process(
172160
$i = $ignoreError['index'];
173161
$ignore = $ignoreError['ignoreError'];
174162

175-
$isIgnoreMatch = $processIgnoreError($error, $i, $ignore);
176-
if (!$isIgnoreMatch) {
177-
continue;
178-
}
179-
180-
if (!$generateBaseline) {
163+
$result = $processIgnoreError($error, $i, $ignore);
164+
if (!$result) {
181165
unset($errors[$errorIndex]);
182166
$ignoredErrors[] = [$error, $ignore];
167+
continue 2;
183168
}
184-
continue 2;
185169
}
186-
187-
if (!$ignoreNewErrors) {
188-
continue;
189-
}
190-
191-
// if the error was not ignored, it is a new error, don't return it when $ignoreNewErrors is set
192-
unset($errors[$errorIndex]);
193170
}
194171

195172
$errors = array_values($errors);

src/Command/AnalyseApplication.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ public function analyse(
4747
?string $projectConfigFile,
4848
?array $projectConfigArray,
4949
InputInterface $input,
50-
bool $generateBaseline,
51-
bool $ignoreNewErrors,
5250
): AnalysisResult
5351
{
5452
$isResultCacheUsed = false;
@@ -140,7 +138,7 @@ public function analyse(
140138
}
141139
}
142140

143-
$ignoredErrorHelperProcessedResult = $ignoredErrorHelperResult->process($errors, $onlyFiles, $files, $hasInternalErrors, $generateBaseline, $ignoreNewErrors);
141+
$ignoredErrorHelperProcessedResult = $ignoredErrorHelperResult->process($errors, $onlyFiles, $files, $hasInternalErrors);
144142
$fileSpecificErrors = $ignoredErrorHelperProcessedResult->getNotIgnoredErrors();
145143
$notFileSpecificErrors = $ignoredErrorHelperProcessedResult->getOtherIgnoreMessages();
146144
$collectedData = $analyserResult->getCollectedData();

src/Command/AnalyseCommand.php

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ protected function configure(): void
102102
new InputOption('watch', null, InputOption::VALUE_NONE, 'Launch PHPStan Pro'),
103103
new InputOption('pro', null, InputOption::VALUE_NONE, 'Launch PHPStan Pro'),
104104
new InputOption('fail-without-result-cache', null, InputOption::VALUE_NONE, 'Return non-zero exit code when result cache is not used'),
105-
new InputOption('ignore-new-errors', null, InputOption::VALUE_NONE, 'Ignore new errors when generating the baseline.'),
106105
]);
107106
}
108107

@@ -137,7 +136,6 @@ protected function execute(InputInterface $input, OutputInterface $output): int
137136
$debugEnabled = (bool) $input->getOption('debug');
138137
$fix = (bool) $input->getOption('fix') || (bool) $input->getOption('watch') || (bool) $input->getOption('pro');
139138
$failWithoutResultCache = (bool) $input->getOption('fail-without-result-cache');
140-
$ignoreNewErrors = (bool) $input->getOption('ignore-new-errors');
141139

142140
/** @var string|false|null $generateBaselineFile */
143141
$generateBaselineFile = $input->getOption('generate-baseline');
@@ -184,11 +182,6 @@ protected function execute(InputInterface $input, OutputInterface $output): int
184182
return $inceptionResult->handleReturn(1, null, $this->analysisStartTime);
185183
}
186184

187-
if ($generateBaselineFile === null && $ignoreNewErrors) {
188-
$inceptionResult->getStdOutput()->getStyle()->error('You must pass the --generate-baseline option alongside --ignore-new-errors.');
189-
return $inceptionResult->handleReturn(1, null, $this->analysisStartTime);
190-
}
191-
192185
$errorOutput = $inceptionResult->getErrorOutput();
193186
$errorFormat = $input->getOption('error-format');
194187

@@ -297,8 +290,6 @@ protected function execute(InputInterface $input, OutputInterface $output): int
297290
$inceptionResult->getProjectConfigFile(),
298291
$inceptionResult->getProjectConfigArray(),
299292
$input,
300-
$generateBaselineFile !== null,
301-
$ignoreNewErrors,
302293
);
303294
} catch (Throwable $t) {
304295
if ($debug) {

src/Command/CommandHelper.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,10 @@ public static function begin(
224224
}
225225

226226
$loader = (new LoaderFactory(
227+
$currentWorkingDirectoryFileHelper,
227228
$containerFactory->getRootDirectory(),
228229
$containerFactory->getCurrentWorkingDirectory(),
230+
$generateBaselineFile,
229231
))->createLoader();
230232

231233
try {

src/Command/FixerWorkerCommand.php

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,6 @@ function (array $errors, array $locallyIgnoredErrors, array $analysedFiles) use
302302
$isOnlyFiles,
303303
$inceptionFiles,
304304
$hasInternalErrors,
305-
false,
306-
false,
307305
);
308306
$ignoreFileErrors = [];
309307
foreach ($ignoredErrorHelperProcessedResult->getNotIgnoredErrors() as $error) {
@@ -357,14 +355,7 @@ private function transformErrorIntoInternalError(Error $error): InternalError
357355
*/
358356
private function filterErrors(array $errors, IgnoredErrorHelperResult $ignoredErrorHelperResult, bool $onlyFiles, array $inceptionFiles, bool $hasInternalErrors): array
359357
{
360-
$ignoredErrorHelperProcessedResult = $ignoredErrorHelperResult->process(
361-
$errors,
362-
$onlyFiles,
363-
$inceptionFiles,
364-
$hasInternalErrors,
365-
false,
366-
false,
367-
);
358+
$ignoredErrorHelperProcessedResult = $ignoredErrorHelperResult->process($errors, $onlyFiles, $inceptionFiles, $hasInternalErrors);
368359
$finalErrors = [];
369360
foreach ($ignoredErrorHelperProcessedResult->getNotIgnoredErrors() as $error) {
370361
if ($error->getIdentifier() === null) {

src/DependencyInjection/ContainerFactory.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,10 @@ public function create(
114114
);
115115

116116
$configurator = new Configurator(new LoaderFactory(
117+
$this->fileHelper,
117118
$this->rootDirectory,
118119
$this->currentWorkingDirectory,
120+
$generateBaselineFile,
119121
), $this->journalContainer);
120122
$configurator->defaultExtensions = [
121123
'php' => PhpExtension::class,

src/DependencyInjection/LoaderFactory.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@
33
namespace PHPStan\DependencyInjection;
44

55
use Nette\DI\Config\Loader;
6+
use PHPStan\File\FileHelper;
67
use function getenv;
78

89
final class LoaderFactory
910
{
1011

1112
public function __construct(
13+
private FileHelper $fileHelper,
1214
private string $rootDir,
1315
private string $currentWorkingDirectory,
16+
private ?string $generateBaselineFile,
1417
)
1518
{
1619
}
1720

1821
public function createLoader(): Loader
1922
{
20-
$loader = new Loader();
23+
$loader = new NeonLoader($this->fileHelper, $this->generateBaselineFile);
2124
$loader->addAdapter('dist', NeonAdapter::class);
2225
$loader->addAdapter('neon', NeonAdapter::class);
2326
$loader->setParameters([
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace PHPStan\DependencyInjection;
4+
5+
use Nette\DI\Config\Loader;
6+
use PHPStan\File\FileHelper;
7+
8+
final class NeonLoader extends Loader
9+
{
10+
11+
public function __construct(
12+
private FileHelper $fileHelper,
13+
private ?string $generateBaselineFile,
14+
)
15+
{
16+
}
17+
18+
/**
19+
* @return mixed[]
20+
*/
21+
public function load(string $file, ?bool $merge = true): array
22+
{
23+
if ($this->generateBaselineFile === null) {
24+
return parent::load($file, $merge);
25+
}
26+
27+
$normalizedFile = $this->fileHelper->normalizePath($file);
28+
if ($this->generateBaselineFile === $normalizedFile) {
29+
return [];
30+
}
31+
32+
return parent::load($file, $merge);
33+
}
34+
35+
}

tests/PHPStan/Analyser/AnalyserTest.php

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -52,27 +52,6 @@ public function testReturnErrorIfIgnoredMessagesDoesNotOccur(): void
5252
], $result);
5353
}
5454

55-
public function testDontReturnErrorIfIgnoredMessagesDoesNotOccurWhenGeneratingBaseline(): void
56-
{
57-
$result = $this->runAnalyser(['#Unknown error#'], false, __DIR__ . '/data/empty/empty.php', false, true);
58-
59-
$this->assertEmpty($result);
60-
}
61-
62-
public function testDontReturnErrorOnNewErrorWhenIgnoringNewErrors(): void
63-
{
64-
$result = $this->runAnalyser(['#Unknown error#'], false, __DIR__ . '/data/bootstrap-error.php', false, true, true);
65-
66-
$this->assertEmpty($result);
67-
}
68-
69-
public function testReturnErrorOnIgnoredErrorWhenIgnoringNewErrorsAndGeneratingBaseline(): void
70-
{
71-
$result = $this->runAnalyser(['#Fail\.#'], false, __DIR__ . '/data/bootstrap-error.php', false, true, true);
72-
73-
$this->assertNotEmpty($result);
74-
}
75-
7655
public function testDoNotReturnErrorIfIgnoredMessagesDoesNotOccurWithReportUnmatchedIgnoredErrorsOff(): void
7756
{
7857
$result = $this->runAnalyser(['#Unknown error#'], false, __DIR__ . '/data/empty/empty.php', false);
@@ -665,8 +644,6 @@ private function runAnalyser(
665644
bool $reportUnmatchedIgnoredErrors,
666645
$filePaths,
667646
bool $onlyFiles,
668-
bool $generateBaseline = false,
669-
bool $ignoreNewErrors = false,
670647
): array
671648
{
672649
$analyser = $this->createAnalyser();
@@ -702,14 +679,7 @@ private function runAnalyser(
702679
);
703680
$analyserResult = $finalizer->finalize($analyserResult, $onlyFiles, false)->getAnalyserResult();
704681

705-
$ignoredErrorHelperProcessedResult = $ignoredErrorHelperResult->process(
706-
$analyserResult->getErrors(),
707-
$onlyFiles,
708-
$normalizedFilePaths,
709-
$analyserResult->hasReachedInternalErrorsCountLimit(),
710-
$generateBaseline,
711-
$ignoreNewErrors,
712-
);
682+
$ignoredErrorHelperProcessedResult = $ignoredErrorHelperResult->process($analyserResult->getErrors(), $onlyFiles, $normalizedFilePaths, $analyserResult->hasReachedInternalErrorsCountLimit());
713683
$errors = $ignoredErrorHelperProcessedResult->getNotIgnoredErrors();
714684
$errors = array_merge($errors, $ignoredErrorHelperProcessedResult->getOtherIgnoreMessages());
715685
if ($analyserResult->hasReachedInternalErrorsCountLimit()) {

tests/PHPStan/Command/AnalyseApplicationIntegrationTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@ private function runPath(string $path, int $expectedStatusCode): string
8585
null,
8686
null,
8787
$this->createMock(InputInterface::class),
88-
false,
89-
false,
9088
);
9189
$statusCode = $errorFormatter->formatErrors($analysisResult, $symfonyOutput);
9290

0 commit comments

Comments
 (0)