ResultsPruner   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 37
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getPrunedResults() 0 21 1
A __construct() 0 5 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Pruner;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Analyser\BaseLineResultsRemover;
8
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\BaseLiner\BaseLineImporter;
9
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\BaseLiner\BaseLineImportException;
10
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\BaseLineFileName;
11
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\ProjectRoot;
12
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\File\FileAccessException;
13
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\HistoryAnalyser\HistoryAnalyserException;
14
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\AnalysisResultsImporter;
15
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\AnalysisResultsImportException;
16
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\ResultsParser\ErrorReportedByStaticAnalysisTool;
17
18
final class ResultsPruner implements ResultsPrunerInterface
19
{
20
    public function __construct(
21
        private BaseLineImporter $baseLineImporter,
22
        private BaseLineResultsRemover $baseLineResultsRemover,
23
        private AnalysisResultsImporter $analysisResultsImporter,
24
    ) {
25
    }
26
27
    /**
28
     * @throws BaseLineImportException
29
     * @throws FileAccessException
30
     * @throws AnalysisResultsImportException
31
     * @throws HistoryAnalyserException
32
     * @throws ErrorReportedByStaticAnalysisTool
33
     */
34
    public function getPrunedResults(
35
        BaseLineFileName $baseLineFileName,
36
        string $analysisResults,
37
        ProjectRoot $projectRoot,
38
        bool $ignoreWarnings,
39
    ): PrunedResults {
40
        $baseLine = $this->baseLineImporter->import($baseLineFileName);
41
        $resultsParser = $baseLine->getResultsParser();
42
        $historyFactory = $baseLine->getHistoryFactory();
43
44
        $historyAnalyser = $historyFactory->newHistoryAnalyser($baseLine->getHistoryMarker(), $projectRoot);
45
        $inputAnalysisResults = $this->analysisResultsImporter->import($resultsParser, $projectRoot, $analysisResults);
46
47
        $outputAnalysisResults = $this->baseLineResultsRemover->pruneBaseLine(
48
            $inputAnalysisResults,
49
            $historyAnalyser,
50
            $baseLine->getAnalysisResults(),
51
            $ignoreWarnings,
52
        );
53
54
        return new PrunedResults($baseLine, $outputAnalysisResults, $inputAnalysisResults);
55
    }
56
}
57