Passed
Pull Request — master (#124)
by Dave
02:13
created

SeverityReader   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
c 1
b 0
f 0
dl 0
loc 23
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getMandatorySeverity() 0 9 2
A getOptionalSeverity() 0 8 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Utils;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\Severity;
8
9
class SeverityReader
10
{
11
    /** @param array<mixed> $data */
12
    public static function getOptionalSeverity(array $data, string $key): Severity
13
    {
14
        $severityAsStringOrNull = ArrayUtils::getOptionalStringValue($data, $key);
15
        if (null === $severityAsStringOrNull) {
16
            return Severity::error();
17
        }
18
19
        return self::getMandatorySeverity($data, $key);
20
    }
21
22
    /** @param array<mixed> $data */
23
    public static function getMandatorySeverity(array $data, string $key): Severity
24
    {
25
        $severityAsString = ArrayUtils::getStringValue($data, $key);
26
        $lowerCaseSeverity = strtolower($severityAsString);
27
        if (!Severity::isValueValid($lowerCaseSeverity)) {
28
            throw ArrayParseException::invalidValue($key, $severityAsString);
29
        }
30
31
        return Severity::fromStringOrNull($lowerCaseSeverity);
32
    }
33
}
34