BaseLineAnalysisResults::fromAnalysisResults()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 8
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Domain\BaseLiner;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\AnalysisResults;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Utils\ArrayParseException;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Utils\ArrayUtils;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Utils\ParseAtLocationException;
11
12
final class BaseLineAnalysisResults
13
{
14
    /**
15
     * @param array<mixed> $array
16
     *
17
     * @throws ParseAtLocationException
18
     */
19
    public static function fromArray(array $array): self
20
    {
21
        $baseLineAnalysisResults = [];
22
23
        $resultCount = 0;
24
        /** @psalm-suppress MixedAssignment */
25
        foreach ($array as $entry) {
26
            ++$resultCount;
27
            try {
28
                ArrayUtils::assertArray($entry);
29
                $baseLineAnalysisResult = BaseLineAnalysisResult::fromArray($entry);
30
                $baseLineAnalysisResults[] = $baseLineAnalysisResult;
31
            } catch (ArrayParseException $e) {
32
                throw ParseAtLocationException::issueAtPosition($e, $resultCount);
33
            }
34
        }
35
36
        return new self($baseLineAnalysisResults);
37
    }
38
39
    public static function fromAnalysisResults(AnalysisResults $analysisResults): self
40
    {
41
        $baseLineAnalysisResults = [];
42
        foreach ($analysisResults->getAnalysisResults() as $analysisResult) {
43
            $baseLineAnalysisResults[] = $analysisResult->asBaseLineAnalysisResult();
44
        }
45
46
        return new self($baseLineAnalysisResults);
47
    }
48
49
    /**
50
     * @param BaseLineAnalysisResult[] $baseLineAnalysisResults
51
     */
52
    private function __construct(
53
        private array $baseLineAnalysisResults,
54
    ) {
55
    }
56
57
    public function getCount(): int
58
    {
59
        return count($this->baseLineAnalysisResults);
60
    }
61
62
    /**
63
     * @return BaseLineAnalysisResult[]
64
     */
65
    public function getBaseLineAnalysisResults(): array
66
    {
67
        return $this->baseLineAnalysisResults;
68
    }
69
70
    /**
71
     * Return as an array of arrays (ready for storing in a file).
72
     *
73
     * @return array<int, array<string,int|string>>
74
     */
75
    public function asArray(): array
76
    {
77
        $array = [];
78
        foreach ($this->getBaseLineAnalysisResults() as $baseLineAnalysisResult) {
79
            $array[] = $baseLineAnalysisResult->asArray();
80
        }
81
82
        return $array;
83
    }
84
}
85