@@ -51,6 +51,14 @@ class PullRequestStatsRepoImpl(
51
51
return StatsResult .Failure (IllegalStateException (" PR has not been merged, no reason to analyze PR stats." ))
52
52
}
53
53
54
+ if (pullRequest.user.login in botUserIds) {
55
+ // Skips PR stats generation if PR is created by bot user.
56
+ Log .i(" The PR#${pullRequest.number} is created by bot user '${pullRequest.user.login} '. Skipping PR stat analysis." )
57
+ return StatsResult .Failure (
58
+ IllegalStateException (" PR has been created by bot user '${pullRequest.user.login} ', no reason to analyze PR stats." ),
59
+ )
60
+ }
61
+
54
62
// API request to get all timeline events for the PR
55
63
val prTimelineEvents = timelinesPager.getAllTimelineEvents(repoOwner, repoId, prNumber)
56
64
// API request to get all PR source code review comments associated with diffs
@@ -61,14 +69,20 @@ class PullRequestStatsRepoImpl(
61
69
val prAvailableForReviewOn: Instant = prAvailableForReviewTime(pullRequest.prCreatedOn, prTimelineEvents)
62
70
63
71
// List of users who has been requested as reviewer or reviewed the PR
72
+ val nonFilteredPrReviewerUsers = prReviewers(pullRequest.user, prTimelineEvents)
64
73
val prReviewers: Set <User > =
65
- prReviewers(pullRequest.user, prTimelineEvents)
74
+ nonFilteredPrReviewerUsers
66
75
// Filters out the bot users from the reviewers
67
76
.filter { it.login !in botUserIds }.toSet()
68
77
69
78
if (prReviewers.isEmpty()) {
70
79
Log .w(" No human reviewers found for PR#${pullRequest.number} . Skipping PR stat analysis." )
71
- return StatsResult .Failure (IllegalStateException (" No human reviewers found for PR#${pullRequest.number} ." ))
80
+ return StatsResult .Failure (
81
+ IllegalStateException (
82
+ " No human reviewers found for PR#${pullRequest.number} . " +
83
+ " Original reviewers: ${nonFilteredPrReviewerUsers.map { it.login }} ." ,
84
+ ),
85
+ )
72
86
}
73
87
74
88
// Builds a map of [Reviewer User -> Initial response time by either commenting, reviewing or approving PR]
0 commit comments