|
6 | 6 | use PHPStan\Command\AnalysisResult;
|
7 | 7 | use PHPStan\Command\Output;
|
8 | 8 | use PHPStan\File\RelativePathHelper;
|
9 |
| -use function array_keys; |
10 | 9 | use function count;
|
11 | 10 | use function ksort;
|
12 | 11 | use function preg_quote;
|
13 |
| -use function sort; |
14 | 12 | use function sprintf;
|
15 | 13 | use function var_export;
|
16 | 14 | use const SORT_STRING;
|
@@ -53,41 +51,47 @@ public function formatErrors(
|
53 | 51 | $fileErrorsByMessage = [];
|
54 | 52 | foreach ($errors as $error) {
|
55 | 53 | $errorMessage = $error->getMessage();
|
| 54 | + $identifier = $error->getIdentifier(); |
56 | 55 | if (!isset($fileErrorsByMessage[$errorMessage])) {
|
57 | 56 | $fileErrorsByMessage[$errorMessage] = [
|
58 | 57 | 1,
|
59 |
| - $error->getIdentifier() !== null ? [$error->getIdentifier() => true] : [], |
| 58 | + $identifier !== null ? [$identifier => 1] : [], |
60 | 59 | ];
|
61 | 60 | continue;
|
62 | 61 | }
|
63 | 62 |
|
64 | 63 | $fileErrorsByMessage[$errorMessage][0]++;
|
65 | 64 |
|
66 |
| - if ($error->getIdentifier() === null) { |
| 65 | + if ($identifier === null) { |
67 | 66 | continue;
|
68 | 67 | }
|
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]++; |
70 | 75 | }
|
71 | 76 | ksort($fileErrorsByMessage, SORT_STRING);
|
72 | 77 |
|
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); |
76 | 80 | if (count($identifiers) > 0) {
|
77 |
| - foreach ($identifiers as $identifier) { |
| 81 | + foreach ($identifiers as $identifier => $identifierCount) { |
78 | 82 | $php .= sprintf(
|
79 | 83 | "\$ignoreErrors[] = [\n\t'message' => %s,\n\t'identifier' => %s,\n\t'count' => %d,\n\t'path' => __DIR__ . %s,\n];\n",
|
80 | 84 | var_export(Helpers::escape('#^' . preg_quote($message, '#') . '$#'), true),
|
81 | 85 | var_export(Helpers::escape($identifier), true),
|
82 |
| - var_export($count, true), |
| 86 | + var_export($identifierCount, true), |
83 | 87 | var_export(Helpers::escape($file), true),
|
84 | 88 | );
|
85 | 89 | }
|
86 | 90 | } else {
|
87 | 91 | $php .= sprintf(
|
88 | 92 | "\$ignoreErrors[] = [\n\t'message' => %s,\n\t'count' => %d,\n\t'path' => __DIR__ . %s,\n];\n",
|
89 | 93 | var_export(Helpers::escape('#^' . preg_quote($message, '#') . '$#'), true),
|
90 |
| - var_export($count, true), |
| 94 | + var_export($totalCount, true), |
91 | 95 | var_export(Helpers::escape($file), true),
|
92 | 96 | );
|
93 | 97 | }
|
|
0 commit comments