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

moosetechnology / GitProjectHealth / 18844534946

27 Oct 2025 02:29PM UTC coverage: 77.768% (-0.2%) from 77.946%
18844534946

Pull #237

github

web-flow
Merge 3a11924c3 into 9215ab54a
Pull Request #237: feat(GLHModel): add position and suggestions in GLHNote

364 of 545 new or added lines in 8 files covered. (66.79%)

3 existing lines in 1 file now uncovered.

23412 of 30105 relevant lines covered (77.77%)

0.78 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
                'notePosition',
26
                'noteSuggestion',
27
                'entity',
28
                'release',
29
                'tag',
30
                'issue',
31
                'milestone',
32
                'tRef'
33
        ],
34
        #category : #'GitLabHealth-Model-Generator'
35
}
36

37
{ #category : #initialization }
38
GLHMetamodelGenerator class >> forceRecreateModel [ 
×
39
        <example>
×
40

×
41
        (UIManager default 
×
42
        alert: 'You are about to execute a "generateWithCleaning" process on our model. 
×
43
        This method will delete and recreate all the model. It will also delete all entities extensions. 
×
44
        Please ensure you have committed our code first so you will be able to reverte the deleted extensios.' title: 'RESET Model'; 
×
45
        confirm: 'Are you REALLY sure you want to reset all model''s relations and extensions ?' )
×
46
         ifTrue: [ 
×
47
                         Smalltalk image garbageCollect.
×
48
                        Smalltalk image garbageCollectMost.
×
49
        Transcript show: 'Block executed for GLHMetamodelGenerator new generateWithCleaning'; cr.
×
50
                        GLHMetamodelGenerator new generateWithCleaning.
×
51
                        "GLHMetamodelGenerator generate"
×
52
    ]
×
53
    ifFalse: [
×
54
        Transcript show: 'Reset operation cancelled'; cr.
×
55
    ].
×
56

×
57

×
58

×
59
]
×
60

61
{ #category : #accessing }
62
GLHMetamodelGenerator class >> packageName [
×
63
        ^ #'GitLabHealth-Model'
×
64
]
×
65

66
{ #category : #accessing }
67
GLHMetamodelGenerator class >> prefix [
×
68
        ^ #GLH
×
69
]
×
70

71
{ #category : #accessing }
72
GLHMetamodelGenerator class >> submetamodels [
×
73

×
74
        ^ { FamixMooseQueryGenerator . FamixGenerator }
×
75
]
×
76

77
{ #category : #branches }
78
GLHMetamodelGenerator >> branchProperties [
×
79

×
80
        
×
81
]
×
82

83
{ #category : #changes }
84
GLHMetamodelGenerator >> changeProperties [
×
85

×
86
        change property: #index type: #Number.
×
87
        change property: #relativeIndex type: #Number.
×
88
        change property: #sourceCode type: #String. 
×
89
        addition property: #delimiter type: #String defaultValue: '#+'.
×
90
        deletion property: #delimiter type: #String defaultValue: '#-'
×
91
]
×
92

93
{ #category : #commits }
94
GLHMetamodelGenerator >> commitProperties [
×
95

×
96
        commit property: #parent_ids type: #Object defaultValue: 'OrderedCollection new'.
×
97

×
98
        commit property: #id type: #String.
×
99
        commit property: #short_id type: #String.
×
100
        commit property: #title type: #String.
×
101
        commit property: #author_name type: #String.
×
102
        commit property: #author_email type: #String.
×
103
        commit property: #authored_date type: #Object.
×
104
        commit property: #committer_name type: #String.
×
105
        commit property: #committer_email type: #String.
×
106
        commit property: #committed_date type: #Object.
×
107
        commit property: #created_at type: #Object.
×
108
        commit property: #message type: #String.
×
109
        commit property: #web_url type: #String.
×
110

×
111

×
112
        (commit property: #additions type: #Number) comment:
×
113
                'The number of line that git consider added'.
×
114
        (commit property: #deletions type: #Number) comment:
×
115
                'The number of line that git consider deleted'
×
116
]
×
117

118
{ #category : #definition }
119
GLHMetamodelGenerator >> defineClasses [
×
120

×
121
        super defineClasses.
×
122
        entity := builder ensureClassNamed: #Entity.
×
123
        group := builder newClassNamed: #Group comment: 'A GitLab Group'.
×
124
        group withGroup.
×
125
        project := builder
×
126
                           newClassNamed: #Project
×
127
                           comment: 'A GitLab Project'.
×
128
        pipeline := builder
×
129
                            newClassNamed: #Pipeline
×
130
                            comment: 'A GitLab Pipeline execution'.
×
131
        user := builder newClassNamed: #User comment: 'A GitLab User'.
×
132
        repository := builder
×
133
                              newClassNamed: #Repository
×
134
                              comment: 'A git repository'.
×
135
        branch := builder newClassNamed: #Branch comment: 'A git branch'.
×
136
        file := builder newClassNamed: #File comment: 'A file'.
×
137
        fileBlob := builder newClassNamed: #FileBlob comment: 'A file blob'.
×
138
        fileDirectory := builder
×
139
                                 newClassNamed: #FileDirectory
×
140
                                 comment: 'A file directory'.
×
141
        commit := builder
×
142
                          newClassNamed: #Commit
×
143
                          comment: 'a commit attached to a repository'.
×
144
        diff := builder newClassNamed: #Diff comment: 'The diff of a commit'.
×
145

×
146
        job := builder newClassNamed: #Job comment: 'A CI Job'.
×
147

×
148
        mergeRequest := builder
×
149
                                newClassNamed: #MergeRequest
×
150
                                comment: 'a gitlab merge request'.
×
151

×
152
        change := builder
×
153
                          newClassNamed: #Change
×
154
                          comment: 'super class for addition and deletion '.
×
155

×
156
        addition := builder
×
157
                            newClassNamed: #Addition
×
158
                            comment:
×
159
                            'a detected addition of a line, seen within a diff '.
×
160
        addition withTesting.
×
161
        deletion := builder
×
162
                            newClassNamed: #Deletion
×
163
                            comment:
×
164
                            'a detected deletion of a line, seen within a diff '.
×
165
        deletion withTesting.
×
166

×
167
        lineOfCode := builder
×
168
                              newClassNamed: #LineOfCode
×
169
                              comment: 'a line of code in a diff comparaison '.
×
170

×
171
        diffRange := builder
×
172
                             newClassNamed: #DiffRange
×
173
                             comment:
×
174
                             'a indicate on which line of code are concerned by a diff (usually declared with @@ oldRange, newRange @@) '.
×
175

×
176
        note := builder
×
177
                        newClassNamed: #Note
×
178
                        comment:
×
179
                        'a note (a diff) proposed in a Merge Request; can be accepted, modified or deleted'.
×
180

×
NEW
181
        notePosition := builder
×
NEW
182
                                newClassNamed: #NotePosition
×
NEW
183
                                comment: 'indicate the position of a note'.
×
NEW
184

×
NEW
185
        noteSuggestion := builder
×
NEW
186
                                  newClassNamed: #NoteSuggestion
×
NEW
187
                                  comment: 'suggestion of code made in a note'.
×
188

×
189
        tag := builder
×
190
                       newClassNamed: #Tag
×
191
                       comment:
×
192
                       'a Tag is a reference to a specific point in the repository''s history'.
×
193

×
194

×
195
        release := builder
×
196
                           newClassNamed: #Release
×
197
                           comment:
×
198
                           'a Release is typically associated with a tag and provide additional metadata and assets that can be distributed to users'.
×
NEW
199

×
200
        issue := builder
×
201
                         newClassNamed: #Issue
×
202
                         comment:
×
203
                         'an Issues help collaboration within a team to plan, track, and deliver work'.
×
NEW
204

×
205
        milestone := builder
×
NEW
206
                             newClassNamed: #Milestone
×
NEW
207
                             comment:
×
NEW
208
                             'a Milestone is use to track progress on groups of issues or pull requests in a repository'
×
UNCOV
209
]
×
210

211
{ #category : #definition }
212
GLHMetamodelGenerator >> defineHierarchy [
×
213

×
214
        super defineHierarchy.
×
215
        entity --|> #TEntityMetaLevelDependency.
×
216
        fileDirectory --|> file.
×
217
        fileBlob --|> file.
×
218

×
219
        group --|> #TNamedEntity.
×
220
        project --|> #TNamedEntity.
×
221
        user --|> #TNamedEntity.
×
222
        commit --|> #TNamedEntity.
×
223
        diff --|> #TNamedEntity.
×
224
        job --|> #TNamedEntity.
×
225
        note --|> #TNamedEntity.
×
NEW
226
        notePosition --|> #TNamedEntity.
×
NEW
227
        noteSuggestion --|> #TNamedEntity.
×
NEW
228

×
229
        tRef --|> #TNamedEntity.
×
NEW
230
        tRef <|-- commit.
×
NEW
231
        tRef <|-- branch.
×
NEW
232
        tRef <|-- tag.
×
233

×
234
        change --|> #TNamedEntity.
×
235
        change <|-- addition.
×
236
        change <|-- deletion.
×
237
        change <|-- lineOfCode.
×
238
        mergeRequest --|> #TNamedEntity.
×
239

×
240
        issue --|> #TNamedEntity.
×
NEW
241
        milestone --|> #TNamedEntity
×
242
]
×
243

244
{ #category : #definition }
245
GLHMetamodelGenerator >> defineProperties [
×
246
        "Group properties"
×
247

×
248
        super defineProperties.
×
249
        self groupProperties.
×
250
        self projectProperties.
×
251
        self pipelinesProperties.
×
252
        self userProperties.
×
253
        self branchProperties.
×
254
        self fileProperties.
×
255
        self commitProperties.
×
256
        self diffProperties.
×
257
        self jobProperties.
×
258
        self changeProperties.
×
259
        self mergeRequestProperties.
×
260
        self diffRangeProperties.
×
261
        self noteProperties.
×
NEW
262
        self notePositionProperties.
×
NEW
263
        self noteSuggestionProperties.
×
264
        self tagProperties.
×
265
        self releaseProperties.
×
266
        self issueProperties.
×
267
        self milestoneProperties.
×
NEW
268

×
NEW
269
        self tRefProperties
×
UNCOV
270
]
×
271

272
{ #category : #definition }
273
GLHMetamodelGenerator >> defineRelations [
×
274
        "MERGE REQUEST RELATIONS""DIFF""TAG AND RELEASE"
×
275

×
276
        super defineRelations.
×
277
        (group property: #projects) <>-* (project property: #group).
×
278
        (group property: #subGroups) <>-* (group property: #group).
×
279

×
280
        (repository property: #branches) <>-* (branch property: #repository).
×
281
        (branch property: #files) <>-* (file property: #branch).
×
282
        (fileDirectory property: #files)
×
283
        <>-* (file property: #directoryOwner).
×
284
        (repository property: #commits) <>-* (commit property: #repository).
×
285
        "commit can appears in multiple branches. And a branch"
×
286
        (branch property: #commits) *-* (commit property: #branch).
×
287
        (commit property: #diffs) <>-* (diff property: #commit).
×
288
        (user property: #commits) <>-* (commit property: #commitCreator).
×
289
        (commit property: #parentCommits)
×
290
        *-* (commit property: #childCommits).
×
291
        (commit property: #jobs) <>-* (job property: #commit).
×
292
        (pipeline property: #jobs) <>-* (job property: #pipeline).
×
293
        (pipeline property: #user) *- (user property: #launchedPipelines).
×
294
        (user property: #jobs) <>-* (job property: #user).
×
295
        (diff property: #file) <>-* (file property: #diffs).
×
296
        (diff property: #diffRanges) <>-* (diffRange property: #diff).
×
297
        (diffRange property: #changes) -* (change property: #diffRange).
×
298

×
299
        self projectRelations.
×
300
        self tagRelations.
×
301
        self releaseRelations.
×
302
        self issueRelations.
×
303
        self mergeRequestsRelations.
×
304
        self noteRelations.
×
NEW
305
        self notePositionRelations.
×
NEW
306
        self noteSuggestionRelations.
×
NEW
307
        self milestoneRelations.
×
NEW
308
        self notePositionRelations
×
UNCOV
309
]
×
310

311
{ #category : #definition }
312
GLHMetamodelGenerator >> defineTraits [
×
313
        super defineTraits.
×
314
        
×
315
        tRef := builder newTraitNamed: #TRef comment: 'I''m representing a Git reference, that is a reference point in a repository''s history'.
×
316
        "generate the identity isXXX method (see https://modularmoose.org/developers/create-new-metamodel/#generating-test-method)"
×
317
        tRef withTesting.
×
318
]
×
319

320
{ #category : #diffs }
321
GLHMetamodelGenerator >> diffProperties [
×
322

×
323
        (diff property: #diffString type: #String) comment:
×
324
                'The string presenting the diff. It should follow the [Detailed-Unified](https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html) format'.
×
325
                
×
326
        (diff property: #new_path type: #String) comment:
×
327
                'The path to the file in the resulted repository commitish'.
×
328
                
×
329
        (diff property: #old_path type: #String) comment:
×
330
                'The path to the file in the origin repository commitish'.
×
331
                
×
332
        (diff property: #new_file type: #Boolean defaultValue: false)
×
333
                comment: 'Is the file of the diff is a new file'.
×
334
                
×
335
        (diff property: #renamed_file type: #Boolean defaultValue: false)
×
336
                comment:
×
337
                'Is the file of the diff has been renamed (see old_path/new_path) file'.
×
338
                
×
339
        (diff property: #deleted_file type: #Boolean defaultValue: false)
×
340
                comment: 'Is the file of the diff has been removed'
×
341
]
×
342

343
{ #category : #diffs }
344
GLHMetamodelGenerator >> diffRangeProperties [
×
345
"must parse the range. 
×
346
        originalLineRange = '-120,5' --> change starts at line #120
×
347
        5 is the number of lines in the original file affected by the change"
×
348
        diffRange property: #originalLineRange type: #String.
×
349
        diffRange property: #newLineRange type: #String.
×
350
        diffRange property: #lineOfCode type: #String
×
351
]
×
352

×
353
{ #category : #files }
×
354
GLHMetamodelGenerator >> fileProperties [
×
355

×
356
        file property: #name type: #String
×
357
]
×
358

×
359
{ #category : #groups }
×
360
GLHMetamodelGenerator >> groupProperties [
×
361

×
362
        group property: #id type: #Number. "Group properties"
×
363
        group property: #web_url type: #String.
×
364
        group property: #description type: #String.
×
365
        group property: #visibility type: #String.
×
366
        group property: #avatar_url type: #String
×
367
]
×
368

×
369
{ #category : #issues }
×
370
GLHMetamodelGenerator >> issueProperties [
×
371

×
372
        issue property: #name type: #String.
×
373
        issue property: #description type: #String.
×
374
        issue property: #state type: #String.
×
375
        issue property: #id type: #Number.
×
376
        
×
377
        issue property: #created_at type: #Object.
×
378
        issue property: #updated_at type: #Object.
×
379
        issue property: #closed_at type: #Object.
×
380
        issue property: #due_date type: #Object.
×
381
]
×
382

×
383
{ #category : #issues }
×
384
GLHMetamodelGenerator >> issueRelations [
×
385

×
386
        issue *-<> project.
×
387
        (issue property: #assignees) <>-* (user property: #assignedIssue).
×
388
        (issue property: #author) *-<> (user property: #createdIssue)
×
389
]
×
390

×
391
{ #category : #jobs }
×
392
GLHMetamodelGenerator >> jobProperties [
×
393

×
394
        job property: #id type: #Number.
×
395
        job property: #allow_failure type: #Boolean.
×
396
        job property: #web_url type: #String.
×
397
        job property: #duration type: #Object.
×
398
        job property: #name type: #String. 
×
399
        job property: #ref type: #String.
×
400
]
×
401

×
402
{ #category : #'merge requests' }
×
403
GLHMetamodelGenerator >> mergeRequestProperties [
×
404

×
405
        mergeRequest property: #id type: #Number.
×
406
        mergeRequest property: #iid type: #Number.
×
407
        mergeRequest property: #project_id type: #Number.
×
408
        mergeRequest property: #title type: #String.
×
409
        mergeRequest property: #description type: #String.
×
410
        mergeRequest property: #state type: #String.
×
411
        mergeRequest property: #created_at type: #Object.
×
412
        mergeRequest property: #updated_at type: #Object.
×
413
        mergeRequest property: #merged_at type: #Object.
×
414
        mergeRequest property: #closed_at type: #Object.
×
415
        mergeRequest property: #target_branch type: #String.
×
416
        mergeRequest property: #source_branch type: #String.
×
417
        mergeRequest property: #user_notes_count type: #Number.
×
418
        mergeRequest property: #upvotes type: #Number.
×
419
        mergeRequest property: #downvotes type: #Number.
×
420
        mergeRequest property: #source_project_id type: #Number.
×
421
        mergeRequest property: #target_project_id type: #Number.
×
422
        mergeRequest property: #labels type: #Object.
×
423
        mergeRequest property: #draft type: #Boolean.
×
424
        mergeRequest property: #work_in_progress type: #Boolean.
×
425
        mergeRequest property: #milestone type: #String.
×
426
        mergeRequest property: #merge_when_pipeline_succeeds type: #Boolean.
×
427
        mergeRequest property: #merge_status type: #String.
×
428
        mergeRequest property: #detailed_merge_status type: #String.
×
429
        mergeRequest property: #sha type: #String.
×
430
        mergeRequest property: #merge_commit_sha type: #String.
×
431
        mergeRequest property: #squash_commit_sha type: #String.
×
432
        mergeRequest property: #discussion_locked type: #String.
×
433
        mergeRequest property: #should_remove_source_branch type: #Boolean.
×
434
        mergeRequest property: #force_remove_source_branch type: #Boolean.
×
435
        mergeRequest property: #reference type: #String.
×
436
        mergeRequest property: #references_short type: #String.
×
437
        mergeRequest property: #references_relative type: #String.
×
438
        mergeRequest property: #references_full type: #String.
×
439
        mergeRequest property: #web_url type: #String.
×
440
        mergeRequest property: #time_stats_time_estimate type: #Number.
×
441
        mergeRequest property: #time_stats_total_time_spent type: #Number.
×
442
        mergeRequest property: #time_stats_human_time_estimate type: #String.
×
443
        mergeRequest
×
444
                property: #time_stats_human_total_time_spent
×
445
                type: #String.
×
446
        mergeRequest property: #squash type: #Boolean.
×
447
        mergeRequest property: #squash_on_merge type: #Boolean.
×
448
        mergeRequest property: #task_completion_status_count type: #Number.
×
449
        mergeRequest
×
450
                property: #task_completion_status_completed_count
×
451
                type: #Number.
×
452
        mergeRequest property: #has_conflicts type: #Boolean.
×
453
        mergeRequest property: #blocking_discussions_resolved type: #Boolean.
×
454
        mergeRequest property: #subscribed type: #Boolean.
×
455
        mergeRequest property: #changes_count type: #String.
×
456
        mergeRequest property: #latest_build_started_at type: #String.
×
457
        mergeRequest property: #latest_build_finished_at type: #String.
×
458
        mergeRequest property: #first_deployed_to_production_at type: #String.
×
459
        mergeRequest property: #approved type: #Boolean.
×
460

×
461
        "see https://github.com/moosetechnology/GitProjectHealth/issues/88"
×
462
        mergeRequest property: #commits type: #Object
×
463
]
×
464

×
465
{ #category : #'merge requests' }
×
466
GLHMetamodelGenerator >> mergeRequestsRelations [
×
467

×
468
        (mergeRequest property: #author)
×
469
        *- (user property: #createdMergeRequests).
×
470
        (mergeRequest property: #approved_by)
×
471
        *-* (user property: #approcheMergeRequests).
×
472
        (mergeRequest property: #merge_user) *- (user property: #usedMerges).
×
473
        (mergeRequest property: #closed_by)
×
474
        *- (user property: #closedMergeRequests).
×
475
        (mergeRequest property: #merged_by)
×
476
        *- (user property: #mergerOfMergeRequests).
×
477
        (mergeRequest property: #assignees)
×
478
        *-* (user property: #assignedMergeRequests).
×
479
        (mergeRequest property: #assignee)
×
480
        *- (user property: #currentlyAssignedMergeRequest).
×
481
        (mergeRequest property: #reviewers)
×
482
        *-* (user property: #reviewedMergeRequest).
×
483
        (mergeRequest property: #pipelines)
×
484
        <>-* (pipeline property: #mergeRequest).
×
485
        (mergeRequest property: #mergedCommit)
×
486
        - (commit property: #commitedMergeRequest).
×
487
        (mergeRequest property: #mergeRequestCommit)
×
488
        - (commit property: #commitedMergeRequest).
×
489
        (mergeRequest property: #squashCommit)
×
490
        - (commit property: #squashedMergeRequest).
×
491
        (mergeRequest property: #diffs) -* (diff property: #mergeRequest).
×
492
        (project property: #mergeRequests)
×
493
        <>-* (mergeRequest property: #project).
×
494

×
495
]
×
496

×
497
{ #category : #milestones }
×
498
GLHMetamodelGenerator >> milestoneProperties [
×
499

×
500
        milestone property: #id type: #Number.
×
501
        milestone property: #title type: #String.
×
502
        milestone property: #description type: #String.
×
503
        
×
504
        milestone property: #open_issues type: #Number .
×
505
        milestone property: #closed_issues type: #Number.
×
506

×
507
        milestone property: #created_at type: #Object.
×
508
        milestone property: #updated_at type: #Object.
×
509
        milestone property: #closed_at type: #Object.
×
510
        milestone property: #due_date type: #Object
×
511
]
×
512

×
513
{ #category : #milestones }
×
514
GLHMetamodelGenerator >> milestoneRelations [
×
515

×
516
        (milestone property: #project) *-<> (project property: #milestone).
×
517
        (milestone property: #author) <>- (user property: #createdMilestone).
×
518
        
×
519
        (milestone property: #issue) <>-* (issue property: #milestone).
×
520
        (milestone property: #mergeRequest) <>-* (mergeRequest property: #milestone).
×
521
]
×
522

×
NEW
523
{ #category : #notes }
×
NEW
524
GLHMetamodelGenerator >> notePositionProperties [
×
NEW
525

×
NEW
526
        notePosition property: #file_path type: #String.
×
NEW
527
        notePosition property: #original_file_path type: #String.
×
NEW
528
        notePosition property: #start_line type: #Number.
×
NEW
529
        notePosition property: #start_line_type type: #String.
×
NEW
530
        notePosition property: #end_line type: #Number.
×
NEW
531
        notePosition property: #end_line_type type: #String.
×
NEW
532
]
×
NEW
533

×
NEW
534
{ #category : #notes }
×
NEW
535
GLHMetamodelGenerator >> notePositionRelations [
×
NEW
536

×
NEW
537
         (notePosition property: #note) - (note property: #position)
×
NEW
538
]
×
NEW
539

×
540
{ #category : #notes }
×
541
GLHMetamodelGenerator >> noteProperties [ 
×
542
        note property: #id type: #Number.
×
543
        note property: #body type: #String. 
×
544
        note property: #attachment type: #Object.
×
545
        note property: #author type: #Object.
×
546
        note property: #created_at type: #Object.
×
547
        note property: #updated_at type: #Object.
×
548
        note property: #system type: #Boolean.
×
549
        note property: #noteable_id type: #Number.
×
550
        note property: #noteable_type type: #String.
×
551
        note property: #project_id type: #Number.
×
552
        note property: #noteable_iid type: #Number.
×
553
        note property: #resolvable type: #Boolean.
×
554
        note property: #confidential type: #Boolean.
×
555
        note property: #internal type: #Boolean.
×
556
        note property: #imported type: #Boolean.
×
557
        note property: #imported_from type: #String.
×
558
         
×
559
 
×
560
 
×
561
 
×
562
 
×
563
 
×
564
 
×
565
 
×
566
 
×
567

×
568
]
×
569

×
NEW
570
{ #category : #notes }
×
571
GLHMetamodelGenerator >> noteRelations [
×
572

×
NEW
573
        (note property: #mergeRequest) *- (mergeRequest property: #note).
×
NEW
574
        (note property: #position) - (notePosition property: #note)
×
NEW
575
]
×
NEW
576

×
NEW
577
{ #category : #notes }
×
NEW
578
GLHMetamodelGenerator >> noteSuggestionProperties [
×
NEW
579

×
NEW
580
        noteSuggestion property: #from_line type: #Number.
×
NEW
581
        noteSuggestion property: #to_line type: #Number.
×
NEW
582
        noteSuggestion property: #from_content type: #String.
×
NEW
583
        noteSuggestion property: #to_content type: #String.
×
NEW
584
]
×
NEW
585

×
NEW
586
{ #category : #notes }
×
NEW
587
GLHMetamodelGenerator >> noteSuggestionRelations [
×
NEW
588

×
NEW
589
        (noteSuggestion property: #note) *- (note property: #suggestions)
×
590
]
×
591

×
592
{ #category : #pipelines }
×
593
GLHMetamodelGenerator >> pipelinesProperties [
×
594
        
×
595
        "Pipelines properties"
×
596
        
×
597
        (pipeline property: #id type: #String) comment:
×
598
                'The id of the pipeline'.
×
599
        (pipeline property: #name type: #String) comment:
×
600
                'name of the pipeline'.        
×
601
                        
×
602
        (pipeline property: #status type: #String) comment:
×
603
                '#success or #failure'.        
×
604
        (pipeline property: #ref type: #String) comment:
×
605
                'reference its emmited source (merge request or else)'.        
×
606
        (pipeline property: #sha type: #String) comment:
×
607
                'sha of its emmited source'.        
×
608
        
×
609
        (pipeline property: #sourceEvent type: #String) comment: 'triggering event from where the pipeline originate, such as #push #fork, etc.'.
×
610
        
×
611
        (pipeline property: #runDate type: #Object) comment:
×
612
                'Date this pipeline was run'.
×
613
        (pipeline property: #created_at type: #Object) comment: 'creation date of the pipeline'.
×
614
        (pipeline property: #updated_at type: #Object) comment: 'update date of the pipeline'.
×
615
        (pipeline property: #started_at type: #Object) comment: 'start date of the pipeline'.
×
616
        (pipeline property: #finished_at type: #Object) comment: 'finish date of the pipeline'.        
×
617
        (pipeline property: #duration type: #Object) comment: 'the running duration of a pipeline'.
×
618

×
619
]
×
620

×
621
{ #category : #projects }
×
622
GLHMetamodelGenerator >> projectProperties [
×
623

×
624
        project property: #id type: #Number. "Project properties"
×
625
        project property: #topics type: #Object.
×
626
        project property: #archived type: #Boolean.
×
627
        project property: #archived type: #Boolean.
×
628
        project property: #description type: #String.
×
629
        project property: #readme_url type: #String.
×
630
        project property: #avatar_url type: #String.
×
631
        project property: #web_url type: #String.
×
632
        project property: #creator_id type: #Number
×
633
]
×
634

×
635
{ #category : #projects }
×
636
GLHMetamodelGenerator >> projectRelations [
×
637

×
638
        (project property: #pipelines) <>-* (pipeline property: #project).
×
639
        (project property: #creator) *- (user property: #createdProjects).
×
640
        (project property: #contributors)
×
641
        *-* (user property: #contributedProjects).
×
642
        (project property: #repository) <>- (repository property: #project)
×
643
]
×
644

×
645
{ #category : #releases }
×
646
GLHMetamodelGenerator >> releaseProperties [
×
647

×
648
        release property: #description type: #String.
×
649
        release property: #tag_name type: #String.
×
650
        release property: #name type: #String.
×
651
        
×
652
        release property: #created_at type: #Object.
×
653
        release property: #released_at type: #Object.
×
654
        release property: #commit_path type: #String.
×
655
        release property: #tag_path type: #String.
×
656
]
×
657

×
658
{ #category : #releases }
×
659
GLHMetamodelGenerator >> releaseRelations [
×
660

×
661
        (release property: #author) *-<> (user property: #releases).
×
662
        (release property: #project) *-<> (project property: #releases)
×
663
]
×
664

×
665
{ #category : #'as yet unclassified' }
×
666
GLHMetamodelGenerator >> tRefProperties [
×
667
        "define the properties of a ref instance"
×
668

×
669
        tRef property: #sha type: #String.
×
670
]
×
671

×
672
{ #category : #tags }
×
673
GLHMetamodelGenerator >> tagProperties [
×
674

×
675
        tag property: #message type: #String.
×
676
        tag property: #target type: #String.
×
677
        tag property: #protected type: #Boolean.
×
678
        tag property: #created_at type: #Object.
×
679

×
680
]
×
681

×
682
{ #category : #tags }
×
683
GLHMetamodelGenerator >> tagRelations [
×
684
        (tag property: #commit) - (commit property: #tag).
×
685
        (tag property: #release) - (release property: #tag).
×
686
        (tag property: #repository) *-<> (repository property: #tags).
×
687
]
×
688

×
689
{ #category : #users }
×
690
GLHMetamodelGenerator >> userProperties [
×
691

×
692
        user property: #id type: #Number.
×
693
        user property: #username type: #String.
×
694
        user property: #name type: #String.
×
695
        user property: #state type: #String.
×
696
        user property: #avatar_url type: #String.
×
697
        user property: #web_url type: #String.
×
698
        user property: #created_at type: #String.
×
699
        user property: #bio type: #String.
×
700
        user property: #location type: #String.
×
701
        user property: #public_email type: #String.
×
702
        user property: #email type: #String.
×
703
        user property: #commit_email type: #String.
×
704
        user property: #skype type: #String.
×
705
        user property: #linkedin type: #String.
×
706
        user property: #twitter type: #String.
×
707
        user property: #website_url type: #String.
×
708
        user property: #organization type: #String.
×
709
        user property: #job_title type: #String.
×
710
        user property: #pronouns type: #String.
×
711
        user property: #bot type: #String.
×
712
        user property: #work_information type: #String.
×
713
        user property: #followers type: #String.
×
714
        user property: #following type: #String
×
715
]
×
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