/
CountReport.php
39 lines (33 loc) · 1.02 KB
/
CountReport.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
declare(strict_types=1);
namespace Psalm\Report;
use Psalm\Report;
use function array_key_exists;
use function uksort;
class CountReport extends Report
{
public function create(): string
{
$issue_type_counts = [];
foreach ($this->issues_data as $issue_data) {
if (array_key_exists($issue_data->type, $issue_type_counts)) {
$issue_type_counts[$issue_data->type]++;
} else {
$issue_type_counts[$issue_data->type] = 1;
}
}
uksort($issue_type_counts, function (string $a, string $b) use ($issue_type_counts): int {
$cmp_result = $issue_type_counts[$a] <=> $issue_type_counts[$b];
if ($cmp_result === 0) {
return $a <=> $b;
} else {
return $cmp_result;
}
});
$output = '';
foreach ($issue_type_counts as $issue_type => $count) {
$output .= "{$issue_type}: {$count}\n";
}
return $output;
}
}