• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

moosetechnology / GitProjectHealth / 10664257731

02 Sep 2024 09:11AM UTC coverage: 18.06%. First build
10664257731

Pull #46

github

web-flow
Merge f972c3087 into 3d150934d
Pull Request #46: refactor: change metric structure

0 of 840 new or added lines in 23 files covered. (0.0%)

1590 of 8804 relevant lines covered (18.06%)

0.18 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st
1
Class {
2
        #name : #DelayUntilFirstChurnMetric,
3
        #superclass : #UserCommitsMetric,
4
        #instVars : [
5
                'maxCommitWindow'
6
        ],
7
        #category : #'GitLabHealth-Model-Analysis'
8
}
9

10
{ #category : #calculating }
NEW
11
DelayUntilFirstChurnMetric >> calculate [
×
NEW
12

×
NEW
13
        | commits groupedByDate res average |
×
NEW
14
        userCommits ifNil: [ self load ].
×
NEW
15
        groupedByDate := self setupGroupedDate.
×
NEW
16
        commits := user
×
NEW
17
                           foundSuccessorOf: userCommits
×
NEW
18
                           andCompleteImportForMax: maxCommitWindow.
×
NEW
19

×
NEW
20

×
NEW
21
        "class commit by dates, filter none user commits"
×
NEW
22
        commits do: [ :commit |
×
NEW
23
                commit commitCreator = user user ifTrue: [
×
NEW
24
                        | overDate |
×
NEW
25
                        overDate := self transformDate: commit created_at to: over.
×
NEW
26

×
NEW
27
                        groupedByDate
×
NEW
28
                                at: overDate printString
×
NEW
29
                                ifPresent: [ :arrayOfCommits | arrayOfCommits add: commit ]
×
NEW
30
                                ifAbsentPut: [
×
NEW
31
                                        OrderedCollection new
×
NEW
32
                                                add: commit;
×
NEW
33
                                                yourself ] ] ].
×
NEW
34

×
NEW
35

×
NEW
36

×
NEW
37
        res := groupedByDate collect: [ :commits4Date |
×
NEW
38
                       | durationFromA2B |
×
NEW
39
                       commits4Date collect: [ :commitA |
×
NEW
40
                               | commitB |
×
NEW
41
                               commitB := GitAnalyzer new
×
NEW
42
                                                  fromCommit: commitA;
×
NEW
43
                                                  maxChildCommit: maxCommitWindow;
×
NEW
44
                                                  analyseDelayUntilFirstChurn.
×
NEW
45

×
NEW
46
                               durationFromA2B := commitB
×
NEW
47
                                                          ifNil: [ 0 ]
×
NEW
48
                                                          ifNotNil: [
×
NEW
49
                                                          commitB created_at - commitA created_at ].
×
NEW
50
                               durationFromA2B ] ].
×
NEW
51

×
NEW
52

×
NEW
53

×
NEW
54
        res := res collect: [ :durationsByDate |
×
NEW
55
                       | filtered |
×
NEW
56
                       filtered := durationsByDate reject: [ :value | value = 0 ].
×
NEW
57
                       filtered isEmpty
×
NEW
58
                               ifTrue: [ nil ]
×
NEW
59
                               ifFalse: [
×
NEW
60
                               (filtered sum: [ :v | v asDuration asSeconds ])
×
NEW
61
                               / filtered size ] ].
×
NEW
62
        
×
NEW
63
        res := res reject: #isNil.
×
NEW
64

×
NEW
65
        average := res
×
NEW
66
                           ifEmpty: [ nil ]
×
NEW
67
                           ifNotEmpty: [ res values average asFloat ].
×
NEW
68

×
NEW
69
        ^ average
×
NEW
70
]
×
71

72
{ #category : #accessing }
NEW
73
DelayUntilFirstChurnMetric >> description [
×
NEW
74

×
NEW
75
        ^ 'delay Until First Churn (W=' , maxCommitWindow printString
×
NEW
76
                           , ')'
×
NEW
77
]
×
78

79
{ #category : #initialization }
NEW
80
DelayUntilFirstChurnMetric >> initialize [
×
NEW
81
        super initialize.
×
NEW
82
        maxCommitWindow := 3
×
NEW
83
]
×
84

85
{ #category : #accessing }
NEW
86
DelayUntilFirstChurnMetric >> name [
×
NEW
87

×
NEW
88
        ^'delayUntilFirstChurn'
×
NEW
89
]
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc