https://github.com/chainsafe/github-analytics
Tool to collect analytics for Github issues and pull requests
https://github.com/chainsafe/github-analytics
analytics codereview community github
Last synced: 7 months ago
JSON representation
Tool to collect analytics for Github issues and pull requests
- Host: GitHub
- URL: https://github.com/chainsafe/github-analytics
- Owner: ChainSafe
- License: mit
- Created: 2023-02-02T13:00:53.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-02-16T16:46:55.000Z (almost 3 years ago)
- Last Synced: 2025-06-18T13:01:55.451Z (7 months ago)
- Topics: analytics, codereview, community, github
- Language: TypeScript
- Homepage:
- Size: 869 KB
- Stars: 4
- Watchers: 6
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Github Analytics
This is a tool to collect various Gtihub Analytics not currently tracked by GithHub.
Some of the things you could analyze are response times (time till first comment/review) for new issues and pull requests, the time required to merge PRs, and statistics on community-opened issues and pull requests.
It is useful to measure the productivity and health of your team as well as community support and usage.
Many thanks to `shibayu36` who created the initial implementation for pull request stats.
## Installation
```bash
npm install -g @chainsafe/github-analytics
yarn global add @chainsafe/github-analytics
```
## Usage
To use this tool, you will need to obtain Github Personal Access Token (PAT) which you can do by following [Github's instructions](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). The minimum required permissions are: repo(repo:status, public_repo), read:org, read:discussions.
### Issues stats
The following command aggregates Issues of web3.js and web3.js-chainlink-plugin which merged between `--start` and `--end`. You can additionally filter Issues by the `--query` option. See also if you want to know what you can specify for `--query`
```bash
GITHUB_TOKEN=... ga issues stat --start="2023-01-01T00:00:00" --end="2023-02-01" --query="repo:web3/web3.js repo:chainsafe/web3.js-plugin-chainlink" --teamMembers=avkos,jdevcs,luu-alex,mconnelly8,Muhammad-Altabba,nikoulai,spacesailor24 --human
```
output is
```json
{
"issues": {
"issueCount": "30 issues",
"externalIssueCount": "11 issues",
"externalIssueClosedCount": "4 issues",
"responseTimeAverage": "2 weeks, 17 hours, 54 minutes, 51.9395454545021 seconds", //only external issues
"responseTimeMedian": "6 days, 8 hours, 33 minutes, 1 second", //only external issues
"timeToCloseAverage": "1 week, 4 days, 4 hours, 28 minutes, 55.75 seconds", //only external issues
"timeToCloseMedian": "1 week, 2 days, 22 hours, 45 minutes, 30.5 seconds" //only external issues
}
}
```
* response time: diff between an Issue created and the first comment by a team member
* timeToClose: diff between an Issue created and an Issue closed
#### log command
If you want to get raw information about PullRequests, you can use a `pr log` command.
### PullRequest stats
The following command aggregates PullRequests of web3.js and web3.js-chainlink-plugin which merged between `--start` and `--end`. You can additionally filter PullRequests by the `--query` option. See also if you want to know what you can specify for `--query`
```bash
GITHUB_TOKEN=... ga pr stat --start="2023-01-01T00:00:00" --end="2023-02-01" --query="repo:web3/web3.js repo:chainsafe/web3.js-plugin-chainlink" --teamMembers=avkos,jdevcs,luu-alex,mconnelly8,Muhammad-Altabba,nikoulai,spacesailor24 --human
```
output is
```json
{
"pull_request": {
"pullRequestCount": "34 pull requests",
"externalPullRequestCount": "6 pull requests",
"additionsAverage": "618 lines",
"additionsMedian": "115 lines",
"deletionsAverage": "1328 lines",
"deletionsMedian": "25 lines",
"leadTimeAverage": "5 days, 13 hours, 16 minutes, 12 seconds",
"leadTimeMedian": "3 days, 5 hours, 50 minutes, 15 seconds",
"timeToMergeAverage": "4 days, 22 hours, 51 minutes, 14 seconds",
"timeToMergeMedian": "2 days, 7 hours, 17 minutes, 5 seconds",
"timeToMergeFromFirstReviewAverage": "3 days, 4 hours, 58 minutes, 49 seconds",
"timeToMergeFromFirstReviewMedian": "1 day, 7 hours, 14 minutes, 14 seconds",
"responseTimeAverage": "2 days, 12 hours, 55 minutes, 59 seconds"
}
}
```
* leadTime: diff between a first commit and a PullRequest merged date
* timeToMerge: diff between a PullRequest created and a PullRequest merged
* timeToMergeFromFirstReview: diff between a first review and a PullRequest merged.
If you want to know about leadTime and timeToMerge for details, See
```bash
|------------- lead time ---------------------------------|
|--- response time ---|
|---------- time to merge ----------------|
-----------------------------------------------------------
^ ^ ^ ^
first commit create PullRequest first review PullRequest merged
```
#### log command
If you want to get raw information about PullRequests, you can use `ga pr log` command.