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

moosetechnology / GitProjectHealth / 16469898571

23 Jul 2025 11:54AM UTC coverage: 73.182% (-1.7%) from 74.896%
16469898571

Pull #218

github

web-flow
Merge 1bf70674d into e893a45f0
Pull Request #218: add tags and commits imports

152 of 153 new or added lines in 5 files covered. (99.35%)

683 existing lines in 8 files now uncovered.

17729 of 24226 relevant lines covered (73.18%)

0.73 hits per line

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

0.0
/src/GitLabHealth-Model-Generator/GLHMetamodelGenerator.class.st
1
Class {
2
        #name : #GLHMetamodelGenerator,
3
        #superclass : #FamixMetamodelGenerator,
4
        #instVars : [
5
                'project',
6
                'group',
7
                'pipeline',
8
                'user',
9
                'repository',
10
                'branch',
11
                'file',
12
                'fileBlob',
13
                'fileDirectory',
14
                'commit',
15
                'commitStats',
16
                'diff',
17
                'job',
18
                'mergeRequest',
19
                'diffRange',
20
                'change',
21
                'addition',
22
                'deletion',
23
                'lineOfCode',
24
                'note',
25
                'entity',
26
                'release',
27
                'tag',
28
                'issue',
29
                'milestone'
30
        ],
31
        #category : #'GitLabHealth-Model-Generator'
32
}
33

34
{ #category : #accessing }
35
GLHMetamodelGenerator class >> packageName [
×
UNCOV
36
        ^ #'GitLabHealth-Model'
×
UNCOV
37
]
×
38

39
{ #category : #accessing }
40
GLHMetamodelGenerator class >> prefix [
×
UNCOV
41
        ^ #GLH
×
UNCOV
42
]
×
43

44
{ #category : #accessing }
45
GLHMetamodelGenerator class >> submetamodels [
×
46

×
UNCOV
47
        ^ { FamixMooseQueryGenerator . FamixGenerator }
×
UNCOV
48
]
×
49

50
{ #category : #branches }
51
GLHMetamodelGenerator >> branchProperties [
×
52

×
UNCOV
53
        branch property: #name type: #String
×
UNCOV
54
]
×
55

56
{ #category : #changes }
57
GLHMetamodelGenerator >> changeProperties [
×
58

×
59
        change property: #index type: #Number.
×
60
        change property: #relativeIndex type: #Number.
×
61
        change property: #sourceCode type: #String. 
×
62
        addition property: #delimiter type: #String defaultValue: '#+'.
×
UNCOV
63
        deletion property: #delimiter type: #String defaultValue: '#-'
×
UNCOV
64
]
×
65

66
{ #category : #commits }
67
GLHMetamodelGenerator >> commitProperties [
×
68

×
69
        commit property: #parent_ids type: #Object defaultValue: 'OrderedCollection new'.
×
70

×
71
        commit property: #id type: #String.
×
72
        commit property: #short_id type: #String.
×
73
        commit property: #title type: #String.
×
74
        commit property: #author_name type: #String.
×
75
        commit property: #author_email type: #String.
×
76
        commit property: #authored_date type: #Object.
×
77
        commit property: #committer_name type: #String.
×
78
        commit property: #committer_email type: #String.
×
79
        commit property: #committed_date type: #Object.
×
80
        commit property: #created_at type: #Object.
×
81
        commit property: #message type: #String.
×
82
        commit property: #web_url type: #String.
×
83

×
84

×
85
        (commit property: #additions type: #Number) comment:
×
86
                'The number of line that git consider added'.
×
87
        (commit property: #deletions type: #Number) comment:
×
UNCOV
88
                'The number of line that git consider deleted'
×
UNCOV
89
]
×
90

91
{ #category : #definition }
92
GLHMetamodelGenerator >> defineClasses [
×
93

×
94
        super defineClasses.
×
95
        entity := builder ensureClassNamed: #Entity.
×
96
        group := builder newClassNamed: #Group comment: 'A GitLab Group'.
×
97
        group withGroup.
×
98
        project := builder
×
99
                           newClassNamed: #Project
×
100
                           comment: 'A GitLab Project'.
×
101
        pipeline := builder
×
102
                            newClassNamed: #Pipeline
×
103
                            comment: 'A GitLab Pipeline execution'.
×
104
        user := builder newClassNamed: #User comment: 'A GitLab User'.
×
105
        repository := builder
×
106
                              newClassNamed: #Repository
×
107
                              comment: 'A git repository'.
×
108
        branch := builder newClassNamed: #Branch comment: 'A git branch'.
×
109
        file := builder newClassNamed: #File comment: 'A file'.
×
110
        fileBlob := builder newClassNamed: #FileBlob comment: 'A file blob'.
×
111
        fileDirectory := builder
×
112
                                 newClassNamed: #FileDirectory
×
113
                                 comment: 'A file directory'.
×
114
        commit := builder
×
115
                          newClassNamed: #Commit
×
116
                          comment: 'a commit attached to a repository'.
×
117
        diff := builder newClassNamed: #Diff comment: 'The diff of a commit'.
×
118

×
119
        job := builder newClassNamed: #Job comment: 'A CI Job'.
×
120

×
121
        mergeRequest := builder
×
122
                                newClassNamed: #MergeRequest
×
123
                                comment: 'a gitlab merge request'.
×
124

×
125
        change := builder
×
126
                          newClassNamed: #Change
×
127
                          comment: 'super class for addition and deletion '.
×
128

×
129
        addition := builder
×
130
                            newClassNamed: #Addition
×
131
                            comment:
×
132
                            'a detected addition of a line, seen within a diff '.
×
133
        addition withTesting.
×
134
        deletion := builder
×
135
                            newClassNamed: #Deletion
×
136
                            comment:
×
137
                            'a detected deletion of a line, seen within a diff '.
×
138
        deletion withTesting.
×
139

×
140
        lineOfCode := builder
×
141
                              newClassNamed: #LineOfCode
×
142
                              comment: 'a line of code in a diff comparaison '.
×
143

×
144
        diffRange := builder
×
145
                             newClassNamed: #DiffRange
×
146
                             comment:
×
147
                             'a indicate on which line of code are concerned by a diff (usually declared with @@ oldRange, newRange @@) '.
×
148

×
149
        note := builder
×
150
                        newClassNamed: #Note
×
151
                        comment:
×
152
                        'a note (a diff) proposed in a Merge Request; can be accepted, modified or deleted'.
×
153

×
154

×
155
        tag := builder
×
156
                       newClassNamed: #Tag
×
157
                       comment:
×
158
                       'a Tag is a reference to a specific point in the repository''s history'.
×
159

×
160

×
161
        release := builder
×
162
                           newClassNamed: #Release
×
163
                           comment:
×
164
                           'a Release is typically associated with a tag and provide additional metadata and assets that can be distributed to users'.
×
165
                
×
166
        issue := builder
×
UNCOV
167
                         newClassNamed: #Issue
×
UNCOV
168
                         comment:
×
169
                         'an Issues help collaboration within a team to plan, track, and deliver work'.
×
170
                
×
171
        milestone := builder
×
172
                         newClassNamed: #Milestone
×
173
                         comment:
×
174
                         'a Milestone is use to track progress on groups of issues or pull requests in a repository'.
×
175
]
×
176

177
{ #category : #definition }
178
GLHMetamodelGenerator >> defineHierarchy [
×
179

×
180
        super defineHierarchy.
×
181
        entity --|> #TEntityMetaLevelDependency.
×
182
        fileDirectory --|> file.
×
183
        fileBlob --|> file.
×
184

×
185
        group --|> #TNamedEntity.
×
186
        project --|> #TNamedEntity.
×
187
        user --|> #TNamedEntity.
×
188
        commit --|> #TNamedEntity.
×
189
        diff --|> #TNamedEntity.
×
UNCOV
190
        job --|> #TNamedEntity.
×
UNCOV
191
        note --|> #TNamedEntity.
×
192

×
193
        change --|> #TNamedEntity.
×
194
        change <|-- addition.
×
195
        change <|-- deletion.
×
196
        change <|-- lineOfCode.
×
197
        mergeRequest --|> #TNamedEntity.
×
198

×
199
        issue --|> #TNamedEntity.
×
200
        milestone --|> #TNamedEntity. 
×
201
]
×
202

203
{ #category : #definition }
204
GLHMetamodelGenerator >> defineProperties [
×
205
        "Group properties"
×
206

×
207
        super defineProperties.
×
208
        self groupProperties.
×
209
        self projectProperties.
×
210
        self pipelinesProperties.
×
211
        self userProperties.
×
212
        self branchProperties.
×
213
        self fileProperties.
×
214
        self commitProperties.
×
215
        self diffProperties.
×
216
        self jobProperties.
×
217
        self changeProperties.
×
218
        self mergeRequestProperties.
×
219
        self diffRangeProperties.
×
220
        self noteProperties.
×
221
        self tagProperties.
×
222
        self releaseProperties.
×
223
        self issueProperties.
×
224
        self milestoneProperties.
×
225
]
×
226

227
{ #category : #definition }
UNCOV
228
GLHMetamodelGenerator >> defineRelations [
×
229
        "MERGE REQUEST RELATIONS""DIFF""TAG AND RELEASE"
×
230

×
231
        super defineRelations.
×
232
        (group property: #projects) <>-* (project property: #group).
×
233
        (group property: #subGroups) <>-* (group property: #group).
×
234

×
235
        (repository property: #branches) <>-* (branch property: #repository).
×
236
        (branch property: #files) <>-* (file property: #branch).
×
237
        (fileDirectory property: #files)
×
238
        <>-* (file property: #directoryOwner).
×
239
        (repository property: #commits) <>-* (commit property: #repository).
×
240
        (branch property: #commits) <>-* (commit property: #branch).
×
241
        (commit property: #diffs) <>-* (diff property: #commit).
×
242
        (user property: #commits) <>-* (commit property: #commitCreator).
×
243
        (commit property: #parentCommits)
×
244
        *-* (commit property: #childCommits).
×
245
        (commit property: #jobs) <>-* (job property: #commit).
×
246
        (pipeline property: #jobs) <>-* (job property: #pipeline).
×
247
        (pipeline property: #user) *- (user property: #launchedPipelines).
×
248
        (user property: #jobs) <>-* (job property: #user).
×
249
        (diff property: #file) <>-* (file property: #diffs).
×
250
        (diff property: #diffRanges) <>-* (diffRange property: #diff).
×
251
        (diffRange property: #changes) -* (change property: #diffRange).
×
252

×
253
        self projectRelations.
×
254
        self tagRelations.
×
255
        self releaseRelations.
×
256
        self issueRelations.
×
257
        self mergeRequestsRelations.
×
258
        self noteRelations.
×
259
        self milestoneRelations. 
×
260
]
×
261

262
{ #category : #diffs }
263
GLHMetamodelGenerator >> diffProperties [
×
264

×
265
        (diff property: #diffString type: #String) comment:
×
266
                'The string presenting the diff. It should follow the [Detailed-Unified](https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html) format'.
×
267
                
×
268
        (diff property: #new_path type: #String) comment:
×
269
                'The path to the file in the resulted repository commitish'.
×
270
                
×
271
        (diff property: #old_path type: #String) comment:
×
272
                'The path to the file in the origin repository commitish'.
×
273
                
×
274
        (diff property: #new_file type: #Boolean defaultValue: false)
×
275
                comment: 'Is the file of the diff is a new file'.
×
276
                
×
277
        (diff property: #renamed_file type: #Boolean defaultValue: false)
×
278
                comment:
×
279
                'Is the file of the diff has been renamed (see old_path/new_path) file'.
×
280
                
×
281
        (diff property: #deleted_file type: #Boolean defaultValue: false)
×
282
                comment: 'Is the file of the diff has been removed'
×
283
]
×
284

285
{ #category : #diffs }
286
GLHMetamodelGenerator >> diffRangeProperties [
×
287
"must parse the range. 
×
288
        originalLineRange = '-120,5' --> change starts at line #120
×
289
        5 is the number of lines in the original file affected by the change"
×
290
        diffRange property: #originalLineRange type: #String.
×
291
        diffRange property: #newLineRange type: #String.
×
292
        diffRange property: #lineOfCode type: #String
×
293
]
×
294

×
295
{ #category : #files }
×
296
GLHMetamodelGenerator >> fileProperties [
×
297

×
298
        file property: #name type: #String
×
299
]
×
300

×
301
{ #category : #groups }
×
302
GLHMetamodelGenerator >> groupProperties [
×
303

×
304
        group property: #id type: #Number. "Group properties"
×
305
        group property: #web_url type: #String.
×
306
        group property: #description type: #String.
×
307
        group property: #visibility type: #String.
×
308
        group property: #avatar_url type: #String
×
309
]
×
310

×
311
{ #category : #issues }
×
312
GLHMetamodelGenerator >> issueProperties [
×
313

×
UNCOV
314
        issue property: #name type: #String.
×
UNCOV
315
        issue property: #description type: #String.
×
316
        issue property: #state type: #String.
×
317
        issue property: #id type: #Number.
×
318
        
×
319
        issue property: #created_at type: #Object.
×
320
        issue property: #updated_at type: #Object.
×
321
        issue property: #closed_at type: #Object.
×
322
        issue property: #due_date type: #Object.
×
323
]
×
324

×
325
{ #category : #issues }
×
326
GLHMetamodelGenerator >> issueRelations [
×
327

×
328
        (issue property: #project) *-<> (project property: #issue).
×
329
        (issue property: #assignees) <>-* (user property: #assignedIssue).
×
330
        (issue property: #author) <>- (user property: #createdIssue).
×
331
        
×
332
]
×
333

×
334
{ #category : #jobs }
×
335
GLHMetamodelGenerator >> jobProperties [
×
336

×
UNCOV
337
        job property: #id type: #Number.
×
UNCOV
338
        job property: #allow_failure type: #Boolean.
×
339
        job property: #web_url type: #String.
×
340
        job property: #duration type: #Object.
×
341
        job property: #name type: #String. 
×
342
        job property: #ref type: #String.
×
343
]
×
344

×
345
{ #category : #'merge requests' }
×
346
GLHMetamodelGenerator >> mergeRequestProperties [
×
347

×
348
        mergeRequest property: #id type: #Number.
×
349
        mergeRequest property: #iid type: #Number.
×
350
        mergeRequest property: #project_id type: #Number.
×
351
        mergeRequest property: #title type: #String.
×
352
        mergeRequest property: #description type: #String.
×
353
        mergeRequest property: #state type: #String.
×
354
        mergeRequest property: #created_at type: #Object.
×
355
        mergeRequest property: #updated_at type: #Object.
×
356
        mergeRequest property: #merged_at type: #Object.
×
357
        mergeRequest property: #closed_at type: #Object.
×
358
        mergeRequest property: #target_branch type: #String.
×
359
        mergeRequest property: #source_branch type: #String.
×
360
        mergeRequest property: #user_notes_count type: #Number.
×
361
        mergeRequest property: #upvotes type: #Number.
×
362
        mergeRequest property: #downvotes type: #Number.
×
363
        mergeRequest property: #source_project_id type: #Number.
×
364
        mergeRequest property: #target_project_id type: #Number.
×
365
        mergeRequest property: #labels type: #Object.
×
366
        mergeRequest property: #draft type: #Boolean.
×
367
        mergeRequest property: #work_in_progress type: #Boolean.
×
368
        mergeRequest property: #milestone type: #String.
×
369
        mergeRequest property: #merge_when_pipeline_succeeds type: #Boolean.
×
370
        mergeRequest property: #merge_status type: #String.
×
371
        mergeRequest property: #detailed_merge_status type: #String.
×
372
        mergeRequest property: #sha type: #String.
×
373
        mergeRequest property: #merge_commit_sha type: #String.
×
374
        mergeRequest property: #squash_commit_sha type: #String.
×
375
        mergeRequest property: #discussion_locked type: #String.
×
376
        mergeRequest property: #should_remove_source_branch type: #Boolean.
×
377
        mergeRequest property: #force_remove_source_branch type: #Boolean.
×
378
        mergeRequest property: #reference type: #String.
×
379
        mergeRequest property: #references_short type: #String.
×
380
        mergeRequest property: #references_relative type: #String.
×
381
        mergeRequest property: #references_full type: #String.
×
382
        mergeRequest property: #web_url type: #String.
×
383
        mergeRequest property: #time_stats_time_estimate type: #Number.
×
384
        mergeRequest property: #time_stats_total_time_spent type: #Number.
×
385
        mergeRequest property: #time_stats_human_time_estimate type: #String.
×
386
        mergeRequest
×
387
                property: #time_stats_human_total_time_spent
×
388
                type: #String.
×
389
        mergeRequest property: #squash type: #Boolean.
×
390
        mergeRequest property: #squash_on_merge type: #Boolean.
×
391
        mergeRequest property: #task_completion_status_count type: #Number.
×
392
        mergeRequest
×
393
                property: #task_completion_status_completed_count
×
394
                type: #Number.
×
395
        mergeRequest property: #has_conflicts type: #Boolean.
×
396
        mergeRequest property: #blocking_discussions_resolved type: #Boolean.
×
397
        mergeRequest property: #subscribed type: #Boolean.
×
398
        mergeRequest property: #changes_count type: #String.
×
399
        mergeRequest property: #latest_build_started_at type: #String.
×
400
        mergeRequest property: #latest_build_finished_at type: #String.
×
401
        mergeRequest property: #first_deployed_to_production_at type: #String.
×
402
        mergeRequest property: #approved type: #Boolean.
×
403

×
404
        "see https://github.com/moosetechnology/GitProjectHealth/issues/88"
×
405
        mergeRequest property: #commits type: #Object
×
406
]
×
407

×
408
{ #category : #'merge requests' }
×
409
GLHMetamodelGenerator >> mergeRequestsRelations [
×
410

×
411
        (mergeRequest property: #author)
×
412
        *- (user property: #createdMergeRequests).
×
413
        (mergeRequest property: #approved_by)
×
414
        *-* (user property: #approcheMergeRequests).
×
415
        (mergeRequest property: #merge_user) *- (user property: #usedMerges).
×
416
        (mergeRequest property: #closed_by)
×
417
        *- (user property: #closedMergeRequests).
×
418
        (mergeRequest property: #merged_by)
×
419
        *- (user property: #mergerOfMergeRequests).
×
420
        (mergeRequest property: #assignees)
×
421
        *-* (user property: #assignedMergeRequests).
×
422
        (mergeRequest property: #assignee)
×
423
        *- (user property: #currentlyAssignedMergeRequest).
×
424
        (mergeRequest property: #reviewers)
×
425
        *-* (user property: #reviewedMergeResquest).
×
426
        (mergeRequest property: #pipelines)
×
427
        <>-* (pipeline property: #mergeResquest).
×
428
        (mergeRequest property: #mergedCommit)
×
429
        - (commit property: #commitedMergeRequest).
×
430
        (mergeRequest property: #mergeRequestCommit)
×
431
        - (commit property: #commitedMergeRequest).
×
432
        (mergeRequest property: #squashCommit)
×
433
        - (commit property: #squashedMergeRequest).
×
434
        (mergeRequest property: #diffs) -* (diff property: #mergeRequest).
×
435
        (project property: #mergeRequests)
×
436
        <>-* (mergeRequest property: #project).
×
437

×
438
]
×
439

×
440
{ #category : #milestones }
×
441
GLHMetamodelGenerator >> milestoneProperties [
×
442

×
443
        milestone property: #id type: #Number.
×
444
        milestone property: #title type: #String.
×
445
        milestone property: #description type: #String.
×
446
        
×
447
        milestone property: #open_issues type: #Number .
×
448
        milestone property: #closed_issues type: #Number.
×
449

×
450
        milestone property: #created_at type: #Object.
×
451
        milestone property: #updated_at type: #Object.
×
452
        milestone property: #closed_at type: #Object.
×
453
        milestone property: #due_date type: #Object
×
454
]
×
455

×
456
{ #category : #milestones }
×
457
GLHMetamodelGenerator >> milestoneRelations [
×
458

×
459
        (milestone property: #project) *-<> (project property: #milestone).
×
460
        (milestone property: #author) <>- (user property: #createdMilestone).
×
461
        
×
462
        (milestone property: #issue) <>-* (issue property: #milestone).
×
463
        (milestone property: #mergeRequest) <>-* (mergeRequest property: #milestone).
×
464
]
×
465

×
466
{ #category : #notes }
×
467
GLHMetamodelGenerator >> noteProperties [ 
×
468
        note property: #id type: #Number.
×
469
        note property: #body type: #String. 
×
470
        note property: #attachment type: #Object.
×
471
        note property: #author type: #Object.
×
472
        note property: #created_at type: #Object.
×
473
        note property: #updated_at type: #Object.
×
474
        note property: #system type: #Boolean.
×
475
        note property: #noteable_id type: #Number.
×
476
        note property: #noteable_type type: #String.
×
477
        note property: #project_id type: #Number.
×
478
        note property: #noteable_iid type: #Number.
×
479
        note property: #resolvable type: #Boolean.
×
480
        note property: #confidential type: #Boolean.
×
481
        note property: #internal type: #Boolean.
×
482
        note property: #imported type: #Boolean.
×
483
        note property: #imported_from type: #String.
×
484
         
×
485
 
×
486
 
×
487
 
×
488
 
×
489
 
×
490
 
×
491
 
×
492
 
×
493

×
494
]
×
495

×
496
{ #category : #'merge requests' }
×
497
GLHMetamodelGenerator >> noteRelations [
×
498

×
499
        (note property: #mergeRequest) *- (mergeRequest property: #note)
×
500
]
×
501

×
502
{ #category : #pipelines }
×
503
GLHMetamodelGenerator >> pipelinesProperties [
×
504
        
×
505
        "Pipelines properties"
×
506
        
×
507
        (pipeline property: #id type: #String) comment:
×
508
                'The id of the pipeline'.
×
509
        (pipeline property: #name type: #String) comment:
×
510
                'name of the pipeline'.        
×
511
                        
×
512
        (pipeline property: #status type: #String) comment:
×
513
                '#success or #failure'.        
×
514
        (pipeline property: #ref type: #String) comment:
×
515
                'reference its emmited source (merge request or else)'.        
×
516
        (pipeline property: #sha type: #String) comment:
×
517
                'sha of its emmited source'.        
×
518
        
×
519
        (pipeline property: #sourceEvent type: #String) comment: 'triggering event from where the pipeline originate, such as #push #fork, etc.'.
×
520
        
×
521
        (pipeline property: #runDate type: #Object) comment:
×
522
                'Date this pipeline was run'.
×
523
        (pipeline property: #created_at type: #Object) comment: 'creation date of the pipeline'.
×
524
        (pipeline property: #updated_at type: #Object) comment: 'update date of the pipeline'.
×
525
        (pipeline property: #started_at type: #Object) comment: 'start date of the pipeline'.
×
526
        (pipeline property: #finished_at type: #Object) comment: 'finish date of the pipeline'.        
×
527
        (pipeline property: #duration type: #Object) comment: 'the running duration of a pipeline'.
×
528

×
529
]
×
530

×
531
{ #category : #projects }
×
532
GLHMetamodelGenerator >> projectProperties [
×
533

×
534
        project property: #id type: #Number. "Project properties"
×
535
        project property: #topics type: #Object.
×
536
        project property: #archived type: #Boolean.
×
537
        project property: #archived type: #Boolean.
×
UNCOV
538
        project property: #description type: #String.
×
UNCOV
539
        project property: #readme_url type: #String.
×
UNCOV
540
        project property: #avatar_url type: #String.
×
UNCOV
541
        project property: #web_url type: #String.
×
UNCOV
542
        project property: #creator_id type: #Number
×
UNCOV
543
]
×
UNCOV
544

×
UNCOV
545
{ #category : #projects }
×
UNCOV
546
GLHMetamodelGenerator >> projectRelations [
×
UNCOV
547

×
UNCOV
548
        (project property: #pipelines) <>-* (pipeline property: #project).
×
UNCOV
549
        (project property: #creator) *- (user property: #createdProjects).
×
UNCOV
550
        (project property: #contributors)
×
UNCOV
551
        *-* (user property: #contributedProjects).
×
UNCOV
552
        (project property: #repository) <>- (repository property: #project)
×
UNCOV
553
]
×
UNCOV
554

×
UNCOV
555
{ #category : #releases }
×
UNCOV
556
GLHMetamodelGenerator >> releaseProperties [
×
UNCOV
557

×
UNCOV
558
        release property: #description type: #String.
×
UNCOV
559
        release property: #tag_name type: #String.
×
UNCOV
560
        release property: #name type: #String.
×
UNCOV
561
        
×
UNCOV
562
        release property: #created_at type: #Object.
×
UNCOV
563
        release property: #released_at type: #Object.
×
UNCOV
564
        release property: #commit_path type: #String.
×
UNCOV
565
        release property: #tag_path type: #String.
×
UNCOV
566
]
×
UNCOV
567

×
UNCOV
568
{ #category : #releases }
×
UNCOV
569
GLHMetamodelGenerator >> releaseRelations [
×
UNCOV
570

×
UNCOV
571
        (release property: #author) *-<> (user property: #releases).
×
UNCOV
572
        (release property: #project) *-<> (project property: #releases)
×
UNCOV
573
]
×
UNCOV
574

×
UNCOV
575
{ #category : #tags }
×
UNCOV
576
GLHMetamodelGenerator >> tagProperties [
×
UNCOV
577

×
UNCOV
578
        tag property: #name type: #String.
×
UNCOV
579
        tag property: #message type: #String.
×
UNCOV
580
        tag property: #target type: #String.
×
UNCOV
581
        tag property: #protected type: #Boolean.
×
UNCOV
582
        tag property: #created_at type: #Object.
×
UNCOV
583

×
UNCOV
584
]
×
UNCOV
585

×
UNCOV
586
{ #category : #tags }
×
UNCOV
587
GLHMetamodelGenerator >> tagRelations [
×
UNCOV
588
        (tag property: #commit) - (commit property: #tag).
×
UNCOV
589
        (tag property: #release) - (release property: #tag).
×
UNCOV
590
        (tag property: #repository) *-<> (repository property: #tags).
×
UNCOV
591
]
×
UNCOV
592

×
UNCOV
593
{ #category : #users }
×
UNCOV
594
GLHMetamodelGenerator >> userProperties [
×
UNCOV
595

×
UNCOV
596
        user property: #id type: #Number.
×
UNCOV
597
        user property: #username type: #String.
×
UNCOV
598
        user property: #name type: #String.
×
UNCOV
599
        user property: #state type: #String.
×
UNCOV
600
        user property: #avatar_url type: #String.
×
UNCOV
601
        user property: #web_url type: #String.
×
UNCOV
602
        user property: #created_at type: #String.
×
UNCOV
603
        user property: #bio type: #String.
×
UNCOV
604
        user property: #location type: #String.
×
UNCOV
605
        user property: #public_email type: #String.
×
UNCOV
606
        user property: #email type: #String.
×
UNCOV
607
        user property: #commit_email type: #String.
×
UNCOV
608
        user property: #skype type: #String.
×
UNCOV
609
        user property: #linkedin type: #String.
×
UNCOV
610
        user property: #twitter type: #String.
×
UNCOV
611
        user property: #website_url type: #String.
×
UNCOV
612
        user property: #organization type: #String.
×
UNCOV
613
        user property: #job_title type: #String.
×
UNCOV
614
        user property: #pronouns type: #String.
×
UNCOV
615
        user property: #bot type: #String.
×
UNCOV
616
        user property: #work_information type: #String.
×
UNCOV
617
        user property: #followers type: #String.
×
UNCOV
618
        user property: #following type: #String
×
UNCOV
619
]
×
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