From 0de2125e2a3c0a86b43a0e7382fd429f61add7fb Mon Sep 17 00:00:00 2001 From: Luke Heath Date: Wed, 18 Oct 2023 23:26:58 -0500 Subject: [PATCH] Generate metrics for released and unreleased bugs (#14637) Updated KPI script to generate metrics on released and unreleased bugs. Looks like this: Bugs: --------------------------- Number of open issues with the "bug" label in fleetdm/fleet: 118 Average open time: 44 days. Number of open issues with the "~unreleased bug" label in fleetdm/fleet: 20 Average open time: 7 days. Number of open issues with the "~released bug" label in fleetdm/fleet: 98 Average open time: 52 days. ... --- website/scripts/get-bug-and-pr-report.js | 27 ++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/website/scripts/get-bug-and-pr-report.js b/website/scripts/get-bug-and-pr-report.js index 2262f99790..2db2e24a07 100644 --- a/website/scripts/get-bug-and-pr-report.js +++ b/website/scripts/get-bug-and-pr-report.js @@ -29,6 +29,10 @@ module.exports = { const NUMBER_OF_RESULTS_REQUESTED = 100; let daysSinceBugsWereOpened = []; + let daysSinceUnreleasedBugsWereOpened = []; + let daysSinceReleasedBugsWereOpened = []; + let allBugsWithUnreleasedLabel = []; + let allBugsWithReleasedLabel = []; let daysSincePullRequestsWereOpened = []; let daysSinceContributorPullRequestsWereOpened = []; let commitToMergeTimesInDays = []; @@ -75,7 +79,7 @@ module.exports = { }, 10000); // iterate through the allIssuesWithBugLabel array, adding the number - for(let issue of allIssuesWithBugLabel) { + for (let issue of allIssuesWithBugLabel) { // Create a date object from the issue's created_at timestamp. let issueOpenedOn = new Date(issue.created_at); // Get the amount of time this issue has been open in milliseconds. @@ -83,6 +87,18 @@ module.exports = { // Convert the miliseconds to days and add the value to the daysSinceBugsWereOpened array let timeOpenInDays = timeOpenInMS / ONE_DAY_IN_MILLISECONDS; daysSinceBugsWereOpened.push(timeOpenInDays); + // Send to released or unreleased bugs array + if (issue.labels.some(label => label.name === '~unreleased bug')) { + allBugsWithUnreleasedLabel.push(issue); + daysSinceUnreleasedBugsWereOpened.push(timeOpenInDays); + } else if (issue.labels.some(label => label.name === '~released bug')) { + allBugsWithReleasedLabel.push(issue); + daysSinceReleasedBugsWereOpened.push(timeOpenInDays); + } else { + // If not labeled as a released or unreleased bug, log a warning. + sails.log.warn('Issue #'+issue.number+' is labeled as a bug but is not labeled as released or unreleased.'); + } + } }, @@ -236,7 +252,9 @@ module.exports = { ]); // Get the averages from the arrays of results. - let averageNumberOfDaysBugsAreOpenFor = Math.round(_.sum(daysSinceBugsWereOpened)/daysSinceBugsWereOpened.length); + let averageNumberOfDaysBugsAreOpenFor = Math.round(_.sum(daysSinceBugsWereOpened) / daysSinceBugsWereOpened.length); + let averageNumberOfDaysUnreleasedBugsAreOpenFor = Math.round(_.sum(daysSinceUnreleasedBugsWereOpened) / daysSinceUnreleasedBugsWereOpened.length); + let averageNumberOfDaysReleasedBugsAreOpenFor = Math.round(_.sum(daysSinceReleasedBugsWereOpened)/daysSinceReleasedBugsWereOpened.length); let averageNumberOfDaysFromCommitToMerge = Math.round(_.sum(commitToMergeTimesInDays)/commitToMergeTimesInDays.length); let averageDaysPullRequestsAreOpenFor = Math.round(_.sum(daysSincePullRequestsWereOpened)/daysSincePullRequestsWereOpened.length); let averageDaysContributorPullRequestsAreOpenFor = Math.round(_.sum(daysSinceContributorPullRequestsWereOpened)/daysSinceContributorPullRequestsWereOpened.length); @@ -271,6 +289,11 @@ module.exports = { Number of open issues with the "bug" label in fleetdm/fleet: ${daysSinceBugsWereOpened.length} Average open time: ${averageNumberOfDaysBugsAreOpenFor} days. + Number of open issues with the "~unreleased bug" label in fleetdm/fleet: ${allBugsWithUnreleasedLabel.length} + Average open time: ${averageNumberOfDaysUnreleasedBugsAreOpenFor} days. + + Number of open issues with the "~released bug" label in fleetdm/fleet: ${allBugsWithReleasedLabel.length} + Average open time: ${averageNumberOfDaysReleasedBugsAreOpenFor} days. Closed pull requests: ---------------------------