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

moosetechnology / GitProjectHealth / 13807399403

12 Mar 2025 08:58AM UTC coverage: 66.731% (+0.2%) from 66.508%
13807399403

Pull #145

github

web-flow
Merge 41a250ee3 into 2c2d8c5e1
Pull Request #145: Code addition merge rerquest project metric

6833 of 8097 new or added lines in 90 files covered. (84.39%)

1 existing line in 1 file now uncovered.

11746 of 17602 relevant lines covered (66.73%)

0.67 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 := self
×
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 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
 ] ].
×
NEW
31

×
NEW
32

×
NEW
33

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

×
NEW
43
                               durationFromA2B := commitB
×
NEW
44
                                                          ifNil: [ 0 ]
×
NEW
45
                                                          ifNotNil: [
×
NEW
46
                                                          commitB created_at - commitA created_at ].
×
NEW
47
                               durationFromA2B ] ].
×
NEW
48

×
NEW
49

×
NEW
50

×
NEW
51
        res := res collect: [ :durationsByDate |
×
NEW
52
                       | filtered |
×
NEW
53
                       filtered := durationsByDate reject: [ :value | value = 0 ].
×
NEW
54
                       filtered isEmpty
×
NEW
55
                               ifTrue: [ nil ]
×
NEW
56
                               ifFalse: [
×
NEW
57
                               (filtered sum: [ :v | v asDuration asSeconds ])
×
NEW
58
                               / filtered size ] ].
×
NEW
59

×
NEW
60
        res := res reject: #isNil.
×
NEW
61

×
NEW
62
        average := res
×
NEW
63
                           ifEmpty: [ nil ]
×
NEW
64
                           ifNotEmpty: [ res values average asFloat ].
×
NEW
65

×
NEW
66
        ^ average
×
NEW
67
]
×
68

69
{ #category : #accessing }
NEW
70
DelayUntilFirstChurnMetric >> description [
×
NEW
71

×
NEW
72
        ^ 'delay Until First Churn (W=' , maxCommitWindow printString
×
NEW
73
                           , ')'
×
NEW
74
]
×
75

76
{ #category : #initialization }
NEW
77
DelayUntilFirstChurnMetric >> initialize [
×
NEW
78
        super initialize.
×
NEW
79
        maxCommitWindow := 3
×
NEW
80
]
×
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