Commit   A
last analyzed

Complexity

Total Complexity 13

Size/Duplication

Total Lines 117
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 2

Importance

Changes 0
Metric Value
wmc 13
lcom 2
cbo 2
dl 0
loc 117
rs 10
c 0
b 0
f 0

13 Methods

Rating   Name   Duplication   Size   Complexity  
A branch() 0 4 1
A issue() 0 4 1
A repository() 0 4 1
A user() 0 4 1
A pullRequestsHasCommits() 0 4 1
A files() 0 4 1
A totalLines() 0 8 1
A totalAdditions() 0 8 1
A totalChanges() 0 8 1
A totalDeletions() 0 8 1
A totalPHPCS() 0 8 1
A getDateforhumansAttribute() 0 4 1
A comments() 0 4 1
1
<?php
2
/**
3
 * GitScrum v0.1.
4
 *
5
 * @author  Renato Marinho <[email protected]>
6
 * @license http://opensource.org/licenses/GPL-3.0 GPLv3
7
 */
8
9
namespace GitScrum\Models;
10
11
use Illuminate\Database\Eloquent\Model;
12
use Carbon\Carbon;
13
14
class Commit extends Model
15
{
16
    /**
17
     * The database table used by the model.
18
     *
19
     * @var string
20
     */
21
    protected $table = 'commits';
22
23
    /**
24
     * Attributes that should be mass-assignable.
25
     *
26
     * @var array
27
     */
28
    protected $fillable = ['product_backlog_id', 'branch_id', 'user_id', 'issue_id', 'sha', 'url', 'message', 'html_url', 'date', 'tree_sha', 'tree_url', 'deleted_at'];
29
30
    /**
31
     * The attributes excluded from the model's JSON form.
32
     *
33
     * @var array
34
     */
35
    protected $hidden = [];
36
37
    /**
38
     * The attributes that should be casted to native types.
39
     *
40
     * @var array
41
     */
42
    protected $casts = [];
43
44
    protected $morphClass = 'commit';
45
46
    public function branch()
47
    {
48
        return $this->belongsTo(\GitScrum\Models\Branch::class, 'branch_id', 'id');
49
    }
50
51
    public function issue()
52
    {
53
        return $this->belongsTo(\GitScrum\Models\Issue::class, 'issue_id', 'id');
54
    }
55
56
    public function repository()
57
    {
58
        return $this->belongsTo(\GitScrum\Models\ProductBacklog::class, 'product_backlog_id', 'id');
59
    }
60
61
    public function user()
62
    {
63
        return $this->belongsTo(\GitScrum\Models\User::class, 'user_id', 'id');
64
    }
65
66
    public function pullRequestsHasCommits()
67
    {
68
        return $this->belongsToMany(\GitScrum\Models\PullRequestsHasCommit::class, 'pull_requests_has_commits', 'commit_id', 'pull_request_id');
69
    }
70
71
    public function files()
72
    {
73
        return $this->hasMany(\GitScrum\Models\CommitFile::class, 'commit_id', 'id');
74
    }
75
76
    public function totalLines()
77
    {
78
        $lines = $this->files->map(function ($file) {
0 ignored issues
show
Documentation introduced by
The property files does not exist on object<GitScrum\Models\Commit>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
79
            return count(preg_split('/\R/', $file->raw));
80
        });
81
82
        return array_sum($lines->all());
83
    }
84
85
    public function totalAdditions()
86
    {
87
        $additions = $this->files->map(function ($file) {
0 ignored issues
show
Documentation introduced by
The property files does not exist on object<GitScrum\Models\Commit>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
88
            return $file->additions;
89
        });
90
91
        return array_sum($additions->all());
92
    }
93
94
    public function totalChanges()
95
    {
96
        $changes = $this->files->map(function ($file) {
0 ignored issues
show
Documentation introduced by
The property files does not exist on object<GitScrum\Models\Commit>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
97
            return $file->changes;
98
        });
99
100
        return array_sum($changes->all());
101
    }
102
103
    public function totalDeletions()
104
    {
105
        $deletions = $this->files->map(function ($file) {
0 ignored issues
show
Documentation introduced by
The property files does not exist on object<GitScrum\Models\Commit>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
106
            return $file->deletions;
107
        });
108
109
        return array_sum($deletions->all());
110
    }
111
112
    public function totalPHPCS($type = 'ERROR')
113
    {
114
        $errors = $this->files->map(function ($file) use ($type) {
0 ignored issues
show
Documentation introduced by
The property files does not exist on object<GitScrum\Models\Commit>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
115
            return $file->filePhpcs()->where('type', '=', $type)->groupBy('type')->count();
116
        });
117
118
        return array_sum($errors->all());
119
    }
120
121
    public function getDateforhumansAttribute()
122
    {
123
        return Carbon::createFromFormat('Y-m-d H:i:s', $this->attributes['created_at'])->diffForHumans();
124
    }
125
126
    public function comments()
127
    {
128
        return $this->morphMany(\GitScrum\Models\Comment::class, 'commentable');
129
    }
130
}
131