Completed
Push — master ( 899eaf...7feae9 )
by Dave
29s queued 14s
created

SeverityReader   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

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

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
    /**
12
     * @param array<mixed> $data
13
     *
14
     * @throws ArrayParseException
15
     */
16
    public static function getOptionalSeverity(array $data, string $key): Severity
17
    {
18
        $severityAsStringOrNull = ArrayUtils::getOptionalStringValue($data, $key);
19
        if (null === $severityAsStringOrNull) {
20
            return Severity::error();
21
        }
22
23
        return self::getMandatorySeverity($data, $key);
24
    }
25
26
    /**
27
     * @param array<mixed> $data
28
     *
29
     * @throws ArrayParseException
30
     */
31
    public static function getMandatorySeverity(array $data, string $key): Severity
32
    {
33
        $severityAsString = ArrayUtils::getStringValue($data, $key);
34
        $lowerCaseSeverity = strtolower($severityAsString);
35
        if (!Severity::isValueValid($lowerCaseSeverity)) {
36
            throw ArrayParseException::invalidValue($key, $severityAsString);
37
        }
38
39
        return Severity::fromStringOrNull($lowerCaseSeverity);
40
    }
41
}
42