Skip to content

Commit fa94ea8

Browse files
committed
fix: json error formatter when files are empty
1 parent ae3a484 commit fa94ea8

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/Command/ErrorFormatter/JsonErrorFormatter.php

+7-6
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
use Nette\Utils\Json;
66
use PHPStan\Command\AnalysisResult;
77
use PHPStan\Command\Output;
8+
use stdClass;
89
use Symfony\Component\Console\Formatter\OutputFormatter;
9-
use function array_key_exists;
1010
use function count;
11+
use function property_exists;
1112

1213
final class JsonErrorFormatter implements ErrorFormatter
1314
{
@@ -23,21 +24,21 @@ public function formatErrors(AnalysisResult $analysisResult, Output $output): in
2324
'errors' => count($analysisResult->getNotFileSpecificErrors()),
2425
'file_errors' => count($analysisResult->getFileSpecificErrors()),
2526
],
26-
'files' => [],
27+
'files' => new stdClass(),
2728
'errors' => [],
2829
];
2930

3031
$tipFormatter = new OutputFormatter(false);
3132

3233
foreach ($analysisResult->getFileSpecificErrors() as $fileSpecificError) {
3334
$file = $fileSpecificError->getFile();
34-
if (!array_key_exists($file, $errorsArray['files'])) {
35-
$errorsArray['files'][$file] = [
35+
if (!property_exists($errorsArray['files'], $file)) {
36+
$errorsArray['files']->$file = [
3637
'errors' => 0,
3738
'messages' => [],
3839
];
3940
}
40-
$errorsArray['files'][$file]['errors']++;
41+
$errorsArray['files']->$file['errors']++;
4142

4243
$message = [
4344
'message' => $fileSpecificError->getMessage(),
@@ -53,7 +54,7 @@ public function formatErrors(AnalysisResult $analysisResult, Output $output): in
5354
$message['identifier'] = $fileSpecificError->getIdentifier();
5455
}
5556

56-
$errorsArray['files'][$file]['messages'][] = $message;
57+
$errorsArray['files']->$file['messages'][] = $message;
5758
}
5859

5960
foreach ($analysisResult->getNotFileSpecificErrors() as $notFileSpecificError) {

tests/PHPStan/Command/ErrorFormatter/JsonErrorFormatterTest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function dataFormatterOutputProvider(): iterable
2424
"errors":0,
2525
"file_errors":0
2626
},
27-
"files":[],
27+
"files":{},
2828
"errors": []
2929
}',
3030
];
@@ -67,7 +67,7 @@ public function dataFormatterOutputProvider(): iterable
6767
"errors":1,
6868
"file_errors":0
6969
},
70-
"files":[],
70+
"files":{},
7171
"errors": [
7272
"first generic error"
7373
]
@@ -133,7 +133,7 @@ public function dataFormatterOutputProvider(): iterable
133133
"errors":2,
134134
"file_errors":0
135135
},
136-
"files":[],
136+
"files":{},
137137
"errors": [
138138
"first generic error",
139139
"second generic<error>"

0 commit comments

Comments
 (0)