LegacyResultsParserConverter   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getNewResultsParser() 0 23 2
A __construct() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Legacy;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\InvalidResultsParserException;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\ResultsParser;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Utils\FqcnRemover;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\ExakatJsonResultsParser\ExakatJsonResultsParser;
11
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\PhanJsonResultsParser\PhanJsonResultsParser;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\PhpCodeSnifferJsonResultsParser\PhpCodeSnifferJsonResultsParser;
13
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\PhpmdJsonResultsParser\PhpmdJsonResultsParser;
14
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\PhpstanJsonResultsParser\PhpstanJsonResultsParser;
15
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\PsalmJsonResultsParser\PsalmJsonResultsParser;
16
use DaveLiddament\StaticAnalysisResultsBaseliner\Plugins\ResultsParsers\SarbJsonResultsParser\SarbJsonResultsParser;
17
18
final class LegacyResultsParserConverter
19
{
20
    public function __construct(
21
        private FqcnRemover $fqcnRemover,
22
    ) {
23
    }
24
25
    /** @throws InvalidResultsParserException */
26
    public function getNewResultsParser(string $legacyResultsParserIdentifier): ResultsParser
27
    {
28
        /** @var array<string,ResultsParser> */
29
        $lookup = [
30
            'exakat-sarb' => new ExakatJsonResultsParser(),
31
            'phan-json' => new PhanJsonResultsParser(),
32
            'phpcodesniffer-full' => new PhpCodeSnifferJsonResultsParser(),
33
            'phpcodesniffer-json' => new PhpCodeSnifferJsonResultsParser(),
34
            'phpmd-json' => new PhpmdJsonResultsParser(),
35
            'phpstan-json-tmp' => new PhpstanJsonResultsParser($this->fqcnRemover),
36
            'phpstan-text-tmp' => new PhpstanJsonResultsParser($this->fqcnRemover),
37
            'psalm-json' => new PsalmJsonResultsParser(),
38
            'psalm-text-tmp' => new PsalmJsonResultsParser(),
39
            'sarb-json' => new SarbJsonResultsParser(),
40
        ];
41
42
        $resultsParser = $lookup[$legacyResultsParserIdentifier] ?? null;
43
44
        if (null === $resultsParser) {
45
            throw InvalidResultsParserException::invalidIdentifier($legacyResultsParserIdentifier);
46
        }
47
48
        return $resultsParser;
49
    }
50
}
51