diff --git a/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st b/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st index 5f353c40..2cb40145 100644 --- a/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st +++ b/src/BaselineOfGitLabHealth/BaselineOfGitLabHealth.class.st @@ -129,16 +129,16 @@ BaselineOfGitLabHealth >> defineJiraConnector: spec [ { #category : #baselines } BaselineOfGitLabHealth >> definePackages: spec [ + "generic" - spec package: 'GitProjectHealth-Model-Importer' - with: [ spec requires: #( 'GitlabAPI' ) ]. + with: [ spec requires: #( 'GitLabHealth-Model' ) ]. spec package: 'GitProjectHealth-Model-Importer-Tests' with: [ spec requires: #( 'GitProjectHealth-Model-Importer' ) ]. - "gitlab" + "model" spec package: 'GitLabHealth-Model'; package: 'GitLabHealth-Model-Extension' @@ -148,34 +148,33 @@ BaselineOfGitLabHealth >> definePackages: spec [ package: 'GitLabHealth-Model-Generator'; package: 'GitLabHealth-Model-Inspector' with: [ spec requires: #( 'GitLabHealth-Model-Visualization' ) ]; - package: 'GitLabHealth-Model-Visualization'; + package: 'GitLabHealth-Model-Visualization'. + + "Gitlab importer" + spec package: 'GitLabHealth-Model-Importer' with: [ spec requires: - #( 'NeoJSON' 'MoreLogger' 'GitProjectHealth-Model-Importer' ) ]; - package: 'GitHubHealth-Model-Importer' with: [ - spec requires: - #( 'NeoJSON' 'MoreLogger' 'GitProjectHealth-Model-Importer' ) ]; + #( 'NeoJSON' 'MoreLogger' 'GitlabAPI' 'GitProjectHealth-Model-Importer' ) ]; package: 'GitLabHealth-Model-Importer-Tests' with: [ spec requires: #( 'GitLabHealth-Model-Importer' 'GitHubHealth-Model-Importer' ) ]. spec package: 'GitLabHealth-Model-Tests' with: [ spec requires: #( 'GitLabHealth-Model' ) ]. - spec - package: 'GitHubHealth-Model-Importer-Tests' - with: [ spec requires: #( 'GitHubHealth-Model-Importer' ) ]. "Bitbucket" spec - package: 'BitBucketHealth-Model-Importer' - with: [ spec requires: #( 'BitbucketPharoAPI' ) ]; + package: 'BitBucketHealth-Model-Importer' with: [ + spec requires: + #( 'BitbucketPharoAPI' 'GitProjectHealth-Model-Importer' ) ]; package: 'BitBucketHealth-Model-Importer-Tests' with: [ spec requires: #( 'BitBucketHealth-Model-Importer' ) ]. "github" - spec - package: 'GitHubHealth-Model-Importer' - with: [ spec requires: #( 'GithubAPI' ) ]; + spec + package: 'GitHubHealth-Model-Importer' with: [ + spec requires: + #( 'GithubAPI' 'NeoJSON' 'MoreLogger' 'GitProjectHealth-Model-Importer' ) ]; package: 'GitHubHealth-Model-Importer-Tests' with: [ spec requires: #( 'GitHubHealth-Model-Importer' ) ]. diff --git a/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st index cf647cc9..58cbf5d8 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/CommitFrequencyMetricTest.class.st @@ -67,38 +67,35 @@ CommitFrequencyMetricTest >> testCalculate [ CommitFrequencyMetricTest >> testCalculate1CommitByWeek [ | glhImporter result commitFrequency | - glhImporter := GLPHImporterMock new. - glhImporter commits: { - (GLHCommit new + glhImporter commits: { + (GLHCommit new id: 1; repository: project1 repository; created_at: createdAt; additions: 7; commitCreator: user; deletions: 5). - (GLHCommit new + (GLHCommit new id: 2; repository: project1 repository; created_at: createdAt + 7 days; additions: 7; commitCreator: user; deletions: 5). - (GLHCommit new + (GLHCommit new id: 3; repository: project1 repository; - created_at: createdAt + 7 days ; + created_at: createdAt + 7 days; additions: 7; commitCreator: user; - deletions: 5). - }. - + deletions: 5) }. commitFrequency := CommitFrequencyMetric new user: user; glhImporter: glhImporter; - setPeriodSince: createdAt asDate until: (createdAt + (7 + 7) days) asDate ; + setPeriodSince: since until: '09-18-2024'; over: Week. "When" @@ -141,8 +138,8 @@ CommitFrequencyMetricTest >> testCalculate1CommitByWeekFromAnotherUser [ commitFrequency := CommitFrequencyMetric new user: user; glhImporter: glhImporter; - setPeriodSince: createdAt asDate - until: (createdAt + (7 + 7) days) asDate; + setPeriodSince: since + until: '09-18-2024'; over: Week. "When" diff --git a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st index 737cf5e8..3dbe252f 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerLocalTest.class.st @@ -21,13 +21,14 @@ GitAnalyzerLocalTest >> setUp [ gitAnalyzer := GitAnalyzer new onModel: glphModel. fromCommit := GLHCommit new. fromCommit short_id: 'testFromCommit'. - fromCommit created_at: ('3 August 2021' asDate). + "3 august 2021" + fromCommit created_at: (Date newDay: 3 month: 8 year: 2021). glphModel add: fromCommit. - - gitAnalyzer fromCommit: fromCommit. + + gitAnalyzer fromCommit: fromCommit ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaComment [ | diffA diffARange addition | @@ -46,7 +47,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaContinueComment [ | diffA diffARange addition | @@ -65,7 +66,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaContinueComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaStopComment [ | diffA diffARange addition | @@ -84,7 +85,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsJavaStopComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsMixedMultipleComments [ | diffA diffARange addition additionB additionC | @@ -111,7 +112,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsMixedMultipleComments [ self assert: gitAnalyzer analyseCommentContribution equals: 2 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsMultipleComments [ | diffA diffARange addition additionB additionC | @@ -138,7 +139,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsMultipleComments [ self assert: gitAnalyzer analyseCommentContribution equals: 3 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsPythonComment [ | diffA diffARange addition | @@ -157,7 +158,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsPythonComment [ self assert: gitAnalyzer analyseCommentContribution equals: 1 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentContributionsShouldBe0 [ | diffA diffARange addition | @@ -176,7 +177,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentContributionsShouldBe0 [ self assert: gitAnalyzer analyseCommentContribution equals: 0 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentInSomeAroundCode [ | diffA diffARange addition | @@ -195,7 +196,7 @@ GitAnalyzerLocalTest >> testAnalyseCommentInSomeAroundCode [ self assert: gitAnalyzer analyseCommentContribution equals: 0 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testAnalyseCommentNotAnAddition [ | diffA diffARange addition | @@ -214,23 +215,26 @@ GitAnalyzerLocalTest >> testAnalyseCommentNotAnAddition [ self assert: gitAnalyzer analyseCommentContribution equals: 0 ] -{ #category : #test } +{ #category : #tests } GitAnalyzerLocalTest >> testArrangeCommitsByDate [ - | commitA2 commitA3 commitB result | + | commitA2 commitA3 commitB result threeAugust fourAugust | + threeAugust := Date newDay: 3 month: 8 year: 2021. + fourAugust := Date newDay: 4 month: 8 year: 2021. + commitA2 := GLHCommit new. commitA2 short_id: 'testFromCommit2'. - commitA2 created_at: ('3 August 2021' asDate). + commitA2 created_at: threeAugust. glphModel add: commitA2. commitA3 := GLHCommit new. commitA3 short_id: 'testFromCommit3'. - commitA3 created_at: ('3 August 2021' asDate). + commitA3 created_at: threeAugust. glphModel add: commitA3. commitB := GLHCommit new. commitB short_id: 'testFromCommitB'. - commitB created_at: ('4 August 2021' asDate). + commitB created_at: fourAugust. glphModel add: commitB. result := gitAnalyzer arrangeCommitsByDate: { @@ -238,8 +242,8 @@ GitAnalyzerLocalTest >> testArrangeCommitsByDate [ commitA2. commitA3. commitB }. - + self assert: result size equals: 2. - self assert: (result at: '3 August 2021') size equals: 3. - self assert: (result at: '4 August 2021') size equals: 1. + self assert: (result at: threeAugust) size equals: 3. + self assert: (result at: fourAugust) size equals: 1 ] diff --git a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st index 8743b651..9eb51a2c 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/GitAnalyzerTest.class.st @@ -42,7 +42,7 @@ GitAnalyzerTest >> setUp [ glhImporter importCommitsOfProject: projects first - since: since asDate + since: since until: nil. gitAnalyzer := GitAnalyzer new @@ -106,8 +106,8 @@ GitAnalyzerTest >> testAnalyseCommitFrequencySinceUntil [ onProject: projects first; analyseCommitFrequencySince: from asDate until: since asDate. - self assert: (res at: from) size equals: 1. - self assert: (res at: '14 May 2024') size equals: 4 + self assert: (res values at: 1) size equals: 1. + self assert: (res values at: 2) size equals: 4 ] { #category : #tests } diff --git a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st index e0fe0881..3303a9fb 100644 --- a/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st +++ b/src/GitLabHealth-Model-Analysis-Tests/MetricTest.class.st @@ -21,13 +21,13 @@ MetricTest >> setUp [ super setUp. "Put here a common initialization logic for tests" - createdAt := '2024-09-04T10:24:11.803+02:00' asDateAndTime. - closedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. - mergedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. - updatedAt := '2024-09-04T11:24:11.803+02:00' asDateAndTime. - - since := '2024-09-04'. - until := '2024-09-05' + createdAt := '2024-09-04T10:24:11.803' asDateAndTime. + closedAt := '2024-09-04T11:24:11.803' asDateAndTime. + mergedAt := '2024-09-04T11:24:11.803' asDateAndTime. + updatedAt := '2024-09-04T11:24:11.803' asDateAndTime. + "mm-dd-yyyy" + since := '09-04-2024'. + until := '09-05-2024' ] { #category : #tests } @@ -43,3 +43,78 @@ MetricTest >> testName [ "Then" self assert: name equals: 'ProjectMetric'. ] + +{ #category : #tests } +MetricTest >> testTransformDateTo [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-04T11:24:11.803+02:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToMonth [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-17T00:00:00.000+00:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Month) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToSameDate [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToSameDateWithOffset [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := '2024-09-01T00:00:00.000+02:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] + +{ #category : #tests } +MetricTest >> testTransformDateToWithDate [ + + | metric startingDate aWeekDateAndTime | + metric := Metric new. + aWeekDateAndTime := Date starting: '2024-09-04T11:24:11.803+02:00' asDateAndTime. + + startingDate := Date starting: + '2024-09-01T00:00:00.000+00:00' asDateAndTime. + + self + assert: (metric transformDate: aWeekDateAndTime to: Week) + equals: startingDate +] diff --git a/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st index 5777f2c0..d02f6aaa 100644 --- a/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ActiveBranchesProjectMetric.class.st @@ -24,7 +24,7 @@ ActiveBranchesProjectMetric >> calculate [ dateOver := self transformDate: commit created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: commit created_at ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st index 2a16208f..161207f5 100644 --- a/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/AutoCodeReviewCommitFrequencyProjectMetric.class.st @@ -14,7 +14,7 @@ AutoCodeReviewCommitFrequencyProjectMetric >> calculate [ (c title beginsWith: '[ACR]') ifTrue: [ | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ] ]. diff --git a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st index b8743154..5db0a0e1 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestDurationProjectMetric.class.st @@ -30,7 +30,7 @@ ClosedMergeRequestDurationProjectMetric >> calculate [ overDate := self transformDate: (dic at: #closed_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #close_duration) ] ]. "deleting the empty array (merge request that are not closed )" diff --git a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st index 56fd116a..d704623a 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestMetric.class.st @@ -18,7 +18,7 @@ ClosedMergeRequestMetric >> calculate [ dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. diff --git a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st index eb3e5c66..2484f4ce 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedMergeRequestProjectMetric.class.st @@ -15,7 +15,7 @@ ClosedMergeRequestProjectMetric >> calculate [ (projectMergeRequests select: [ :mr| mr state= #closed ]) do: [ :c | | dateOver | dateOver := self transformDate: c closed_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st b/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st index a368fd81..5e4655ef 100644 --- a/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ClosedTicketsMetric.class.st @@ -15,7 +15,7 @@ ClosedTicketsMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st index 8cb2656f..76472418 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByCommitProjectMetric.class.st @@ -23,7 +23,7 @@ CodeAdditionByCommitProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st index f16eccb8..9728025b 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByMRMetric.class.st @@ -16,7 +16,7 @@ CodeAdditionByMRMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st index df27be7a..8bcb1403 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeAdditionByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st index 3109cc7a..2e7f2da9 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionByTicketMetric.class.st @@ -17,7 +17,7 @@ CodeAdditionByTicketMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st index 43d912d2..307f5cd1 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionDuringAndByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeAdditionDuringAndByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st index 6ed63542..a3ff7087 100644 --- a/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeAdditionMetric.class.st @@ -23,7 +23,7 @@ CodeAdditionMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. diff --git a/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st index a34aff28..172b4f13 100644 --- a/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeChurnMetric.class.st @@ -40,7 +40,7 @@ CodeChurnMetric >> calculate [ (#LoCOnCommit -> contribution) } asDictionary. overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :array | array add: churnOnCommit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st index aa101f07..27cbedeb 100644 --- a/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeChurnOnCommitsProjectMetric.class.st @@ -41,7 +41,7 @@ CodeChurnOnCommitsProjectMetric >> calculate [ (#LoCOnCommit -> contribution) } asDictionary. overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :array | array add: churnOnCommit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st index deb00710..b2ffbdfe 100644 --- a/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeChurnOnMergedMergeRequestProjectMetric.class.st @@ -56,7 +56,7 @@ CodeChurnOnMergedMergeRequestProjectMetric >> calculate [ (#LoCOnCommit -> contribution) } asDictionary. overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :array | array add: churnOnCommit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st index 9797a544..91c839e8 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionByMRMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionByMRMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st index eb78d776..48fffbab 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st index 66e71b04..32dfebf6 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionByTicketMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionByTicketMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st index e699b920..b6d45b5f 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionDuringAndByMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ CodeDeletionDuringAndByMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :mr | dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st index 8a02306e..e0e04d20 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionMetric.class.st @@ -23,7 +23,7 @@ CodeDeletionMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. diff --git a/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st index fa87ba03..df2eee70 100644 --- a/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CodeDeletionProjectMetric.class.st @@ -26,7 +26,7 @@ CodeDeletionProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st b/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st index 91d25c0c..c561619c 100644 --- a/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommentContributionMetric.class.st @@ -23,7 +23,7 @@ CommentContributionMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st index 6019a218..fb472082 100644 --- a/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommentLinesAddedProjectMetric.class.st @@ -26,7 +26,7 @@ CommentLinesAddedProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: assoc key created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: assoc value ] ]. groupedByDate := groupedByDate collect: [ :contribs | diff --git a/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st index 10c7d36b..f05397c5 100644 --- a/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitFrequencyMetric.class.st @@ -14,7 +14,7 @@ CommitFrequencyMetric >> calculate [ userCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st index e0e1bb64..910ff623 100644 --- a/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitFrequencyProjectMetric.class.st @@ -15,7 +15,7 @@ CommitFrequencyProjectMetric >> calculate [ projectCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st index 2c0ed742..4967f8cc 100644 --- a/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitLinkedToJiraProjectMetric.class.st @@ -21,7 +21,7 @@ CommitLinkedToJiraProjectMetric >> calculate [ dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st index ab1f8269..4c1ea0b7 100644 --- a/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitWithoutUsernameProjectMetric.class.st @@ -20,7 +20,7 @@ CommitWithoutUsernameProjectMetric >> calculate [ filteredCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st index ac783f32..2fe9504d 100644 --- a/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitsLinkWithTicketMetric.class.st @@ -14,7 +14,7 @@ CommitsLinkWithTicketMetric >> calculate [ userCommits do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st b/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st index 9114c13a..6423350b 100644 --- a/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CommitsNumberByJiraTicketsMetric.class.st @@ -14,7 +14,7 @@ CommitsNumberByJiraTicketsMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | | average | diff --git a/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st index 8cc89bcc..1435a696 100644 --- a/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ContributedProjectMetric.class.st @@ -15,7 +15,7 @@ ContributedProjectMetric >> calculate [ dateOver := self transformDate: userCommit committed_date to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userCommit repository project ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st index 53c21ac0..75ec3df7 100644 --- a/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ContributorsProjectMetric.class.st @@ -19,7 +19,7 @@ ContributorsProjectMetric >> calculate [ projectCommits do: [ :commit | | dateOver | dateOver := self transformDate: commit created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: commit commitCreator ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: commit commitCreator ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st b/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st index ef496dcd..6c39830c 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedACRPipelineByProject.class.st @@ -20,7 +20,7 @@ CreatedACRPipelineByProject >> calculate [ mr note do: [ :note | | dateOver | dateOver := self transformDate: note created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: note ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: note ]. ] ]. groupedByDate := groupedByDate collect: [ :notesGroup | diff --git a/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st index 97971a5f..21a9968c 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedMergeRequestProjectMetric.class.st @@ -15,7 +15,7 @@ CreatedMergeRequestProjectMetric >> calculate [ projectMergeRequests do: [ :c | | dateOver | dateOver := self transformDate: c created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st b/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st index 1f190105..ce2b37a2 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedNoteInMergedOrClosedMergeRequest.class.st @@ -20,7 +20,7 @@ CreatedNoteInMergedOrClosedMergeRequest >> calculate [ ifFalse: [ mergeRequest merged_at ]. dateOver := self transformDate: mrDate to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :v | v add: mergeRequest ] ]. groupedByDate := groupedByDate collect: [ :mergeRequestGroup | diff --git a/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st index 42ea9619..e50da5a0 100644 --- a/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/CreatedNotesByACRByProjectMetric.class.st @@ -21,7 +21,7 @@ CreatedNotesByACRByProjectMetric >> calculate [ mr note do: [ :note | | dateOver | dateOver := self transformDate: note created_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: note ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: note ]. ] ]. diff --git a/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st b/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st index f90f2022..fffb2d17 100644 --- a/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/DelayUntilFirstChurnMetric.class.st @@ -25,7 +25,7 @@ DelayUntilFirstChurnMetric >> calculate [ overDate := self transformDate: commit created_at to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :arrayOfCommits | arrayOfCommits add: commit ] ] ]. diff --git a/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st b/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st index 304b379c..37c5b754 100644 --- a/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st +++ b/src/GitLabHealth-Model-Analysis/GitAnalyzer.class.st @@ -82,19 +82,18 @@ GitAnalyzer >> analyseCommitFrequencyFromCommits: initialCommits [ commits := self arrangeCommitsByDate: initialCommits. commits := (commits associations sortAscending: [ :entry | - entry key asDate ]) asOrderedDictionary. + entry key ]) asOrderedDictionary. ^ commits ] { #category : #analyze } -GitAnalyzer >> analyseCommitFrequencySince: since until: until [ +GitAnalyzer >> analyseCommitFrequencySince: since until: until [ | commits response | - - ('GitAnalyzer, analyse commit Frequency on: ', onProject printString ) + ('GitAnalyzer, analyse commit Frequency on: ' , onProject printString) recordInfo. - + response := { (#numberOfCommit -> nil). (#frequency -> nil) } asDictionary. @@ -105,8 +104,8 @@ GitAnalyzer >> analyseCommitFrequencySince: since until: until [ until: until. commits := self arrangeCommitsByDate: commits. - commits := (commits associations sortAscending: [ :entry | - entry key asDate ]) asOrderedDictionary. + commits := (commits associations sortAscending: [ :entry | entry key ]) + asOrderedDictionary. ^ commits ] @@ -196,7 +195,7 @@ GitAnalyzer >> arrangeCommitsByDate: commits [ | date | date := commit created_at asDate. date2commits - at: date printString + at: date ifPresent: [ :v | v add: commit ] ifAbsentPut: [ OrderedCollection new diff --git a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st index d2172900..2d553d8c 100644 --- a/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st +++ b/src/GitLabHealth-Model-Analysis/GitMetricExporter.class.st @@ -31,8 +31,8 @@ GitMetricExporter class >> demoPeriod [ GitMetricExporter >> addAPeriodFrom: since to: until [ runningPeriods add: { - (#since -> since asDate). - (#until -> until asDate) } asDictionary. + (#since -> (self readDate: since)). + (#until -> (self readDate: until)) } asDictionary. ^ runningPeriods ] @@ -343,15 +343,22 @@ GitMetricExporter >> findParticipationOfCommitAuthorNamed: username amongProject size. ']' }) recordInfo. - params := { - #author -> username. - #since -> '01 january 2023' asDate asDateAndTime asString. - #until -> Date today asDateAndTime asString - } asDictionary. - response := glhImporter repoApi commits getAllInProject: project id withParams: params. - response := (response collect: [ :commitsJson | glhImporter parseCommitsResult: commitsJson]) flattened. - response isNotEmpty - ]. + params := { + (#author -> username). + (#since + -> + (Date newDay: 1 month: 1 year: 2023) + asDateAndTime asString). + (#until + -> Date today asDateAndTime asString) } + asDictionary. + response := glhImporter repoApi commits + getAllInProject: project id + withParams: params. + response := (response collect: [ :commitsJson | + glhImporter parseCommitsResult: + commitsJson ]) flattened. + response isNotEmpty ]. ^ itsProjects ] @@ -477,15 +484,14 @@ GitMetricExporter >> initialize [ entities := OrderedCollection new. "set up the minimal date from which we are looking for the commits a particular user in projects" - sinceTimeLimit := '2024-01-01' asDate asDateAndTime. + sinceTimeLimit := (Date newDay: 1 month: 1 year: 2024) asDateAndTime. runningPeriods := OrderedCollection new. maxCommitWindow := 3. over := Date. analyses := OrderedCollection new. - metrics := Metric allSubclasses reject: #isAbstract. - + metrics := Metric allSubclasses reject: #isAbstract ] { #category : #accessing } @@ -542,6 +548,16 @@ GitMetricExporter >> projectMetrics [ ^ metrics select: [ :metric | metric inheritsFrom: ProjectMetric ] ] +{ #category : #accessing } +GitMetricExporter >> readDate: aDateOrDateString [ + "date is supposed to the the format mm-dd-yyyy for compatibility with Moose 12" + + (aDateOrDateString isKindOf: DateAndTime) ifTrue: [ + ^ aDateOrDateString asDate ]. + (aDateOrDateString isKindOf: Date) ifTrue: [ ^ aDateOrDateString ]. + ^ Date readFrom: aDateOrDateString pattern: 'mm-dd-yyyy' +] + { #category : #setup } GitMetricExporter >> setupAnalysisForProjectsWithIds: projectIds [ diff --git a/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st index 05f3f6b7..62bc8ec7 100644 --- a/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/InactiveBranchesProjectMetric.class.st @@ -23,7 +23,7 @@ InactiveBranchesProjectMetric >> calculate [ "sort commits by ASC date" commit := (branch commits sort: [ :c1 :c2 | c1 created_at > c2 created_at]) first. dateOver := self transformDate: commit created_at to: over. - groupedByDate at: dateOver printString ifAbsent: [ outside add: branch ] ]. + groupedByDate at: dateOver ifAbsent: [ outside add: branch ] ]. ^ outside size asFloat diff --git a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st index 006e809e..9627d2ce 100644 --- a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceMetric.class.st @@ -15,7 +15,7 @@ JiraTimeMRTimeDifferenceMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st index 021fb69f..f3a80372 100644 --- a/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/JiraTimeMRTimeDifferenceProjectMetric.class.st @@ -24,7 +24,7 @@ JiraTimeMRTimeDifferenceProjectMetric >> calculate [ jiraID := GPJCConnector new jiraKeyFromCommitMessage: mr title. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st b/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st index 924d19cf..3761eaec 100644 --- a/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergeRequestDurationMetric.class.st @@ -26,7 +26,7 @@ MergeRequestDurationMetric >> calculate [ overDate := self transformDate: (dic at: #created_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #duration) ] ]. diff --git a/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st index 8b873e17..8238ca63 100644 --- a/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergeRequestLinkedToJiraProjectMetric.class.st @@ -21,7 +21,7 @@ MergeRequestLinkedToJiraProjectMetric >> calculate [ dateOver := self transformDate: mr created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: mr ] ]. groupedByDate := groupedByDate collect: [ :group | diff --git a/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st b/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st index fe35e940..6b1ee3d8 100644 --- a/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergeRequestMergedByUserMetric.class.st @@ -29,7 +29,7 @@ MergeRequestMergedByUserMetric >> calculate [ userMergedMergeRequests do: [ :userMergeRequest | "here we look at the specific date of its merged" dateOver := self transformDate: userMergeRequest merged_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st index 62330d2b..8a7f2024 100644 --- a/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergedMergeRequestDurationProjectMetric.class.st @@ -10,11 +10,12 @@ MergedMergeRequestDurationProjectMetric >> calculate [ | groupedByDate gitAnalyzer mergeRequestsValidation filterGroups | projectMergeRequests ifNil: [ self load ]. - groupedByDate := self setupGroupedDate. - + groupedByDate := self setupGroupedDate. + "Filtrer les merge requests pour ne garder que celles qui ont une date de clĂ´ture (merged_at) et un statut 'merged'" - projectMergeRequests := projectMergeRequests select: [ :mr | - (mr merged_at) notNil and: [(mr state) = 'merged'] ]. + projectMergeRequests := projectMergeRequests select: [ :mr | + mr merged_at notNil and: [ + mr state = 'merged' ] ]. projectMergeRequests ifEmpty: [ ^ nil ]. @@ -30,7 +31,7 @@ MergedMergeRequestDurationProjectMetric >> calculate [ overDate := self transformDate: (dic at: #merged_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #duration) ] ]. "deleting the empty array (merge request that are not merged )" diff --git a/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st index 5357c35f..14bc2aff 100644 --- a/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergedMergeRequestMetric.class.st @@ -26,7 +26,7 @@ MergedMergeRequestMetric >> calculate [ userMergeRequests do: [ :userMergeRequest | "here we look at the specific date of its merged" dateOver := self transformDate: userMergeRequest merged_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st index eb5a4374..0ce79d7f 100644 --- a/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/MergedMergeRequestProjectMetric.class.st @@ -17,7 +17,7 @@ MergedMergeRequestProjectMetric >> calculate [ thenDo: [ :c | | dateOver | dateOver := self transformDate: c merged_at to: over. - groupedByDate at: dateOver printString ifPresent: [ :v | v add: c ] ]. + groupedByDate at: dateOver ifPresent: [ :v | v add: c ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/Metric.class.st b/src/GitLabHealth-Model-Analysis/Metric.class.st index 62b2652e..2ce23f7f 100644 --- a/src/GitLabHealth-Model-Analysis/Metric.class.st +++ b/src/GitLabHealth-Model-Analysis/Metric.class.st @@ -90,12 +90,22 @@ Metric >> over: anObject [ over := anObject ] +{ #category : #'utils - date' } +Metric >> readDate: aDateOrDateString [ + "date is supposed to the the format mm-dd-yyyy for compatibility with Moose 12" + + (aDateOrDateString isKindOf: DateAndTime) ifTrue: [ + ^ aDateOrDateString asDate ]. + (aDateOrDateString isKindOf: Date) ifTrue: [ ^ aDateOrDateString ]. + ^ Date readFrom: aDateOrDateString pattern: 'mm-dd-yyyy' +] + { #category : #initialization } Metric >> setPeriodSince: since until: until [ - period := { - (#since -> since asDate). - (#until -> until asDate) } asDictionary + period := { + (#since -> (self readDate: since)). + (#until -> (self readDate: until)) } asDictionary ] { #category : #'utils - date' } @@ -109,7 +119,7 @@ Metric >> setupGroupedDate [ end := self transformDate: (period at: #until) to: over. groupedByDate - at: start printString + at: start ifAbsentPut: [ OrderedCollection new ]. overSymbol := over name asLowercase asSymbol. @@ -119,26 +129,26 @@ Metric >> setupGroupedDate [ over := #day ]. - [ groupedByDate keys last asDate < end ] whileTrue: [ + [ groupedByDate keys last < end ] whileTrue: [ | index | - index := groupedByDate keys last asDate + index := groupedByDate keys last + (increment perform: overSymbol). index := self transformDate: index to: over. groupedByDate - at: index printString + at: index ifAbsentPut: [ OrderedCollection new ] ]. over = #day ifTrue: [ groupedByDate := (groupedByDate associations select: [ :date | | aWeekday | - aWeekday := date key asDate weekday. + aWeekday := date key weekday. (aWeekday = #Sunday or: [ aWeekday = #Saturday ]) not ]) asOrderedDictionary ]. groupedByDate - at: end printString + at: end ifAbsentPut: [ OrderedCollection new ]. ^ groupedByDate @@ -147,8 +157,11 @@ Metric >> setupGroupedDate [ { #category : #'utils - date' } Metric >> transformDate: date to: aWeekOrMonthOrYear [ - aWeekOrMonthOrYear = Month ifTrue: [ ^ date asDate month asDate ]. + | dateWithoutOffSet | + dateWithoutOffSet := (date asDateAndTime + date offset) withoutOffset. + aWeekOrMonthOrYear = Month ifTrue: [ + ^ dateWithoutOffSet asDate month asDate ]. - ^ (date asDate perform: ('as' , aWeekOrMonthOrYear name) asSymbol) - asDate + ^ (dateWithoutOffSet asDate perform: + ('as' , aWeekOrMonthOrYear name) asSymbol) asDate ] diff --git a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st index ff3f367d..70318db1 100644 --- a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestDurationProjectMetric.class.st @@ -26,7 +26,7 @@ OpenedMergeRequestDurationProjectMetric >> calculate [ overDate := self transformDate: (dic at: #created_at) to: over. groupedByDate - at: overDate printString + at: overDate ifPresent: [ :durations | durations add: (dic at: #open_duration) ] ]. "deleting the empty array" diff --git a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st index 2e1c4b2d..c9b9fe73 100644 --- a/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/OpenedMergeRequestMetric.class.st @@ -16,7 +16,7 @@ OpenedMergeRequestMetric >> calculate [ dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st index a3c1e92a..5d81a97a 100644 --- a/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/PendingMergeRequestMetric.class.st @@ -19,7 +19,7 @@ PendingMergeRequestMetric >> calculate [ "here we look at the specific date of its created" dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st index ca408fef..8d3d0ae2 100644 --- a/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/ReviewedByUserMergeRequestMetric.class.st @@ -28,7 +28,7 @@ ReviewedByUserMergeRequestMetric >> calculate [ dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st index 4bba9611..c8331ddf 100644 --- a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestMetric.class.st @@ -33,7 +33,7 @@ SelfMergedUnderAMinuteMergeRequestMetric >> calculate [ noVerificationMergeRequests do: [ :userMergeRequest | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. diff --git a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st index c4f3bf13..56004f12 100644 --- a/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/SelfMergedUnderAMinuteMergeRequestProjectMetric.class.st @@ -32,7 +32,7 @@ SelfMergedUnderAMinuteMergeRequestProjectMetric >> calculate [ | dateOver | dateOver := self transformDate: userMergeRequest created_at to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: userMergeRequest ] ]. groupedByDate := groupedByDate collect: [ :group | group size ]. diff --git a/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st b/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st index 5af96884..535bf5e7 100644 --- a/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st +++ b/src/GitLabHealth-Model-Analysis/TimeBetweenCommitMetric.class.st @@ -19,7 +19,7 @@ TimeBetweenCommitMetric >> calculate [ dateOver := self transformDate: commit committed_date to: over. groupedByDate - at: dateOver printString + at: dateOver ifPresent: [ :value | value add: commit ] ]. groupedByDate := groupedByDate select: [ :group | group size >= 2 ]. diff --git a/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st b/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st index 6d58326f..4ce261e5 100644 --- a/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st +++ b/src/GitLabHealth-Model-Importer-Tests/GitlabCommitsMock.class.st @@ -14,7 +14,7 @@ GitlabCommitsMock >> diffOf: commitSha inProject: projectId uniDiff: unidiff [ { #category : #api } GitlabCommitsMock >> get: aString inProject: anUndefinedObject [ - + aString ifNil: [ ^ nil ]. ^ '{ "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6", "short_id": "6104942438c", diff --git a/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st b/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st index 10813103..16953646 100644 --- a/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st +++ b/src/GitLabHealth-Model-Importer/GitlabModelImporter.class.st @@ -742,6 +742,8 @@ GitlabModelImporter >> importBranchesOfProject: aGLHProject [ GitlabModelImporter >> importCommit: aCommitID ofProject: aGLHProject [ | result parsedResult | + "This commit cannot exist" + aCommitID ifNil: [ ^ nil ]. (self glhModel allWithType: GLHCommit) asOrderedCollection detect: [ :commit | commit id = aCommitID ] ifFound: [ :commit | ^ commit ]. diff --git a/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st b/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st index bd7ddc85..ad28ea8a 100644 --- a/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st +++ b/src/GitProject-JiraConnector-Tests/JiraTimeMRTimeDifferenceMetricTest.class.st @@ -85,8 +85,8 @@ JiraTimeMRTimeDifferenceMetricTest >> testCalculate2PeriodWith1EmptyPeriod [ user: user; glhImporter: glhImporter; jiraImporter: jiraImporter; - setPeriodSince: '2024-09-01' - until: '2024-09-09'; + setPeriodSince: '09-01-2024' + until: '09-09-2024'; over: Week. "When"