Passed
Pull Request — master (#69)
by Dave
02:10
created

JsonOutputFormatter::outputResults()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 25
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 15
nc 2
nop 2
dl 0
loc 25
rs 9.7666
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\OutputFormatters;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\OutputFormatter\OutputFormatter;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\OutputFormatter\SummaryStats;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\AnalysisResults;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Utils\JsonUtils;
11
12
class JsonOutputFormatter implements OutputFormatter
13
{
14
    public function outputResults(
15
        SummaryStats $summaryStats,
16
        AnalysisResults $baseLineRemovedResults
17
    ): string {
18
        $results = [
19
            'summary' => [
20
                'latestAnalysisCount' => $summaryStats->getLatestAnalysisResultsCount(),
21
                'baseLineCount' => $summaryStats->getBaseLineCount(),
22
                'baseLineRemovedCount' => $baseLineRemovedResults->getCount(),
23
            ],
24
            'issues' => [],
25
            'success' => $baseLineRemovedResults->hasNoIssues(),
26
        ];
27
28
        foreach ($baseLineRemovedResults->getAnalysisResults() as $analysisResult) {
29
            $location = $analysisResult->getLocation();
30
            $results['issues'][] = [
31
                'file' => $location->getFileName()->getFileName(),
32
                'line' => $location->getLineNumber()->getLineNumber(),
33
                'type' => $analysisResult->getType()->getType(),
34
                'message' => $analysisResult->getMessage(),
35
            ];
36
        }
37
38
        return JsonUtils::toString($results);
39
    }
40
41
    public function getIdentifier(): string
42
    {
43
        return 'json';
44
    }
45
}
46