Skip to content

Commit 32d8aa7

Browse files
committed
Fix PHP baseline count
1 parent 1249a20 commit 32d8aa7

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

src/Command/ErrorFormatter/BaselinePhpErrorFormatter.php

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66
use PHPStan\Command\AnalysisResult;
77
use PHPStan\Command\Output;
88
use PHPStan\File\RelativePathHelper;
9-
use function array_keys;
109
use function count;
1110
use function ksort;
1211
use function preg_quote;
13-
use function sort;
1412
use function sprintf;
1513
use function var_export;
1614
use const SORT_STRING;
@@ -53,41 +51,47 @@ public function formatErrors(
5351
$fileErrorsByMessage = [];
5452
foreach ($errors as $error) {
5553
$errorMessage = $error->getMessage();
54+
$identifier = $error->getIdentifier();
5655
if (!isset($fileErrorsByMessage[$errorMessage])) {
5756
$fileErrorsByMessage[$errorMessage] = [
5857
1,
59-
$error->getIdentifier() !== null ? [$error->getIdentifier() => true] : [],
58+
$identifier !== null ? [$identifier => 1] : [],
6059
];
6160
continue;
6261
}
6362

6463
$fileErrorsByMessage[$errorMessage][0]++;
6564

66-
if ($error->getIdentifier() === null) {
65+
if ($identifier === null) {
6766
continue;
6867
}
69-
$fileErrorsByMessage[$errorMessage][1][$error->getIdentifier()] = true;
68+
69+
if (!isset($fileErrorsByMessage[$errorMessage][1][$identifier])) {
70+
$fileErrorsByMessage[$errorMessage][1][$identifier] = 1;
71+
continue;
72+
}
73+
74+
$fileErrorsByMessage[$errorMessage][1][$identifier]++;
7075
}
7176
ksort($fileErrorsByMessage, SORT_STRING);
7277

73-
foreach ($fileErrorsByMessage as $message => [$count, $identifiersInKeys]) {
74-
$identifiers = array_keys($identifiersInKeys);
75-
sort($identifiers);
78+
foreach ($fileErrorsByMessage as $message => [$totalCount, $identifiers]) {
79+
ksort($identifiers, SORT_STRING);
7680
if (count($identifiers) > 0) {
77-
foreach ($identifiers as $identifier) {
81+
foreach ($identifiers as $identifier => $identifierCount) {
7882
$php .= sprintf(
7983
"\$ignoreErrors[] = [\n\t'message' => %s,\n\t'identifier' => %s,\n\t'count' => %d,\n\t'path' => __DIR__ . %s,\n];\n",
8084
var_export(Helpers::escape('#^' . preg_quote($message, '#') . '$#'), true),
8185
var_export(Helpers::escape($identifier), true),
82-
var_export($count, true),
86+
var_export($identifierCount, true),
8387
var_export(Helpers::escape($file), true),
8488
);
8589
}
8690
} else {
8791
$php .= sprintf(
8892
"\$ignoreErrors[] = [\n\t'message' => %s,\n\t'count' => %d,\n\t'path' => __DIR__ . %s,\n];\n",
8993
var_export(Helpers::escape('#^' . preg_quote($message, '#') . '$#'), true),
90-
var_export($count, true),
94+
var_export($totalCount, true),
9195
var_export(Helpers::escape($file), true),
9296
);
9397
}

tests/PHPStan/Command/ErrorFormatter/BaselinePhpErrorFormatterTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,13 @@ public function dataFormatErrors(): iterable
135135
\$ignoreErrors[] = [
136136
'message' => '#^Foo with same message, different identifier$#',
137137
'identifier' => 'argument.byRef',
138-
'count' => 2,
138+
'count' => 1,
139139
'path' => __DIR__ . '/Foo.php',
140140
];
141141
\$ignoreErrors[] = [
142142
'message' => '#^Foo with same message, different identifier$#',
143143
'identifier' => 'argument.type',
144-
'count' => 2,
144+
'count' => 1,
145145
'path' => __DIR__ . '/Foo.php',
146146
];
147147

0 commit comments

Comments
 (0)