Completed
Push — master ( 9e1ab8...e0f7b9 )
by Bill
04:14 queued 02:03
created

ResultsGenerator   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 5
dl 0
loc 55
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A getResults() 0 8 2
A getResultsForFile() 0 11 1
1
<?php declare(strict_types = 1);
2
3
namespace Churn\Results;
4
5
use Churn\Services\CommandService;
6
use Churn\Assessors\GitCommitCount\GitCommitCountAssessor;
7
use Churn\Assessors\CyclomaticComplexity\CyclomaticComplexityAssessor;
8
9
class ResultsGenerator
10
{
11
12
    /**
13
     * The commit count assesor.
14
     * @var GitCommitCountAssessor
15
     */
16
    protected $commitCountAssessor;
17
18
    /**
19
     * The complexity assesor.
20
     * @var CyclomaticComplexityAssessor
21
     */
22
    protected $complexityAssessor;
23
24
    /**
25
     * Class constructor.
26
     */
27
    public function __construct()
28
    {
29
        $this->commitCountAssessor = new GitCommitCountAssessor(new CommandService);
30
        $this->complexityAssessor = new CyclomaticComplexityAssessor();
31
    }
32
33
    /**
34
     * Generates a ResultCollection for the provided $fils.
35
     * @param  array $files List of files.
36
     * @return ResultCollection
37
     */
38
    public function getResults(array $files): ResultCollection
39
    {
40
        $results = new ResultCollection;
41
        foreach ($files as $file) {
42
            $results->push($this->getResultsForFile($file));
43
        }
44
        return $results;
45
    }
46
47
    /**
48
     * Returns a Result object for the provided $file.
49
     * @param  string $file File.
50
     * @return Result
51
     */
52
    protected function getResultsForFile(string $file): Result
53
    {
54
        $commits    = $this->commitCountAssessor->assess($file);
55
        $complexity = $this->complexityAssessor->assess($file);
56
57
        return new Result([
58
            'file'       => $file,
59
            'commits'    => $commits,
60
            'complexity' => $complexity,
61
        ]);
62
    }
63
}
64