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

moosetechnology / GitProjectHealth / 13894927502

17 Mar 2025 08:34AM UTC coverage: 67.805% (+0.3%) from 67.481%
13894927502

Pull #156

github

web-flow
Merge d1e3103bd into 7593d9ff0
Pull Request #156: add Jira time merge Request time diffrence for project metric

365 of 803 new or added lines in 13 files covered. (45.45%)

34 existing lines in 2 files now uncovered.

12447 of 18357 relevant lines covered (67.81%)

0.68 hits per line

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

95.0
/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st
1
Class {
2
        #name : #JiraTimeMRTimeDifferenceProjectMetric,
3
        #superclass : #ProjectMetric,
4
        #instVars : [
5
                'issues'
6
        ],
7
        #category : #'GitLabHealth-Model-Analysis'
8
}
9

10
{ #category : #calculating }
11
JiraTimeMRTimeDifferenceProjectMetric >> calculate [  
1✔
12
        | groupedByDate dateOver  jiraID  | 
1✔
13

1✔
14
        projectMergeRequests ifNil: [ self load ].  
1✔
15
        projectMergeRequests ifEmpty: [ ^ nil ].  
1✔
16

1✔
17
        groupedByDate := self setupGroupedDate.  
1✔
18

1✔
19
        projectMergeRequests do: [ :mr |  
1✔
20
                dateOver := self transformDate: mr created_at to: over.  
1✔
21

1✔
22
                "Extraction de l'ID du ticket Jira depuis le titre du mr"  
1✔
23
                jiraID := GPJCConnector new jiraKeyFromCommitMessage: mr title.  
1✔
24

1✔
25
                groupedByDate  
1✔
26
                        at: dateOver printString  
1✔
27
                        ifPresent: [ :value | value add: mr ]  
1✔
28
        ].  
1✔
29

1✔
30
               groupedByDate := groupedByDate collect: [ :group |  
1✔
31
                                  | differences average |  
1✔
32
                                        differences := group collect: [ :mergeRequest |  
1✔
33
                                        | firstCommitDate mergeRequestTime jiraTime jiraIssue |  
1✔
34
                        
1✔
35
                               jiraIssue := mergeRequest jiraIssue.
1✔
36
                         
1✔
37
                        
1✔
38
                          firstCommitDate  :=     mergeRequest commits last created_at.  
1✔
39
                               mergeRequestTime :=     mergeRequest merged_at - firstCommitDate.  
1✔
40

1✔
41
                        
1✔
42
                               jiraTime := jiraIssue timeOriginalEstimate   ifNil: [ jiraIssue timeEstimate ]. 
1✔
43
                        
1✔
44
                                jiraTime ifNil: [ ^ nil ].      
1✔
45
                               (jiraTime - mergeRequestTime) asSeconds  
1✔
46
                ].  
1✔
47

1✔
48
                average := group ifEmpty: [ 0 ] ifNotEmpty: [ differences average ].
1✔
49
                average  
1✔
50
        ].  
1✔
51

1✔
52
        ^ groupedByDate average asFloat.
1✔
53

1✔
54
]
1✔
55

56
{ #category : #accessing }
NEW
57
JiraTimeMRTimeDifferenceProjectMetric >> description [
×
NEW
58

×
NEW
59
        ^ 'average difference in seconds between jira estimate time and associated merge request time '
×
NEW
60
]
×
61

62
{ #category : #loading }
63
JiraTimeMRTimeDifferenceProjectMetric >> load [
1✔
64

1✔
65
        projectMergeRequests := self
1✔
66
                                     loadProjectCompleteMergeRequestsSince:  (period at: #since)
1✔
67
                                     until: (period at: #until).
1✔
68
         self loadMergeRequestIssues: projectMergeRequests .
1✔
69
        
1✔
70
        projectMergeRequests := projectMergeRequests select: [ :mergeRequest |
1✔
71
                                     | issueIsEstimated |
1✔
72
                                     issueIsEstimated := mergeRequest jiraIssue
1✔
73
                                                                 timeEstimate isNotNil or:
1✔
74
                                                                 mergeRequest jiraIssue
1✔
75
                                                                         timeOriginalEstimate
1✔
76
                                                                         isNotNil.
1✔
77
                                     mergeRequest merged_at isNotNil and:
1✔
78
                                             issueIsEstimated ]
1✔
79
]
1✔
80

81
{ #category : #issue }
82
JiraTimeMRTimeDifferenceProjectMetric >> loadMergeRequestIssues: aMergeRequestCollection [
1✔
83
        
1✔
84
         (aMergeRequestCollection do: [ :mr | 
1✔
85
                |id|
1✔
86

1✔
87
                id := GPJCConnector new jiraKeyFromCommitMessage: mr title .
1✔
88
                         jiraImporter issues detect: [ :issue | issue key = id  ] ifFound: [:issue | 
1✔
89
                           jiraImporter loadIssues:  { issue }.
1✔
90
                                                               GPJCConnector new
1✔
91
                                                             gpModel: glhImporter glhModel;
1✔
92
                                                             jiraModel: jiraImporter model;
1✔
93
                                                             connect.
1✔
94
                        ].  
1✔
95
                 ]).
1✔
96
]
1✔
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

© 2025 Coveralls, Inc