Passed
Pull Request — master (#69)
by Dave
01:55
created

JsonOutputFormatter   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
dl 0
loc 32
rs 10
c 1
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A outputResults() 0 25 2
A getName() 0 3 1
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 getName(): string
42
    {
43
        return 'json';
44
    }
45
}
46