Skip to content

Commit

Permalink
Merge pull request #332 from Yegorov/220
Browse files Browse the repository at this point in the history
#220: calculate average reviews per pr
  • Loading branch information
yegor256 authored Sep 14, 2024
2 parents cc359e7 + 2b1308b commit e24e2c9
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
13 changes: 8 additions & 5 deletions judges/quality-of-service/quality-of-service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -124,22 +124,25 @@
f.average_pull_hoc_size = hocs.empty? ? 0 : hocs.sum.to_f / hocs.size
f.average_pull_files_size = files.empty? ? 0 : files.sum.to_f / files.size

# Average review time, comments and reviewers
# Average review time, review comments, reviewers and reviews
review_times = []
review_comments = []
reviewers = []
reviews = []
Fbe.unmask_repos.each do |repo|
Fbe.octo.search_issues(
"repo:#{repo} type:pr is:merged closed:>#{f.since.utc.iso8601[0..9]}"
)[:items].each do |pr|
reviews = Fbe.octo.pull_request_reviews(repo, pr[:number])
review = reviews.min_by { |r| r[:submitted_at] }
review_times << (pr[:merged_at] - review[:submitted_at]).to_i if review
pr_reviews = Fbe.octo.pull_request_reviews(repo, pr[:number])
pr_review = pr_reviews.min_by { |r| r[:submitted_at] }
review_times << (pr[:merged_at] - pr_review[:submitted_at]).to_i if pr_review
review_comments << Fbe.octo.review_comments(repo, pr[:number]).size
reviewers << reviews.map { |r| r.dig(:user, :id) }.uniq.size
reviewers << pr_reviews.map { |r| r.dig(:user, :id) }.uniq.size
reviews << pr_reviews.size
end
end
f.average_review_time = review_times.empty? ? 0 : review_times.sum.to_f / review_times.size
f.average_review_size = review_comments.empty? ? 0 : review_comments.sum.to_f / review_comments.size
f.average_reviewers_per_pull = reviewers.empty? ? 0 : reviewers.sum.to_f / reviewers.size
f.average_reviews_per_pull = reviews.empty? ? 0 : reviews.sum.to_f / reviews.size
end
1 change: 1 addition & 0 deletions judges/quality-of-service/simple-collect.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,4 @@ expected:
- /fb/f[average_review_time != 0]
- /fb/f[average_review_size != 0]
- /fb/f[average_reviewers_per_pull != 0]
- /fb/f[average_reviews_per_pull != 0]
3 changes: 2 additions & 1 deletion test/judges/test-quality-of-service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ def test_quality_of_service_average_hocs_and_files
end
end

def test_quality_of_service_average_review_time_comments_and_reviewers
def test_quality_of_service_average_review_time_comments_reviewers_and_reviews
WebMock.disable_net_connect!
stub_github('https://api.github.com/repos/foo/foo', body: { id: 42, full_name: 'foo/foo' })
stub_github(
Expand Down Expand Up @@ -831,6 +831,7 @@ def test_quality_of_service_average_review_time_comments_and_reviewers
assert_in_delta(431_100, f.average_review_time)
assert_in_delta(3.333, f.average_review_size)
assert_in_delta(1.666, f.average_reviewers_per_pull)
assert_in_delta(3.666, f.average_reviews_per_pull)
end
end

Expand Down

0 comments on commit e24e2c9

Please sign in to comment.