9 个版本 (稳定版)

1.4.0 2021年2月6日
1.3.0 2020年8月24日
1.2.0 2020年7月22日
1.1.0 2020年6月29日
0.1.0 2020年6月19日

#2056 in 命令行工具

每月下载量 23 次

MIT 许可证

53KB
1K SLoC

Credit

Build AUR version

credit 是一个用于测量 Github 贡献的快速工具。

使用 credit 来查找

  • 在特定国家中最 productive 的开发者是谁。
  • 谁将最多的 Pull Requests 合并到项目中。
  • 谁在 Issues 和 PR 中参与最多的讨论。
  • 维护者响应和解决 Issues 所需的时间。
  • 合并 PR 所需的时间。
  • 如果库会是一个安全的长期(即维护)依赖项。

目录

安装

Arch Linux

使用兼容 AUR 的包管理器,如 aura

sudo aura -A credit-bin

Cargo

cargo install credit

使用方法

要使用 credit,您需要一个具有 public_repo 权限的 Github 个人访问令牌查看这里 以获取更多示例。

💡 注意: credit 调用了基于 GraphQL 的 Github v4 API,其速率限制比基于 REST 的 v3 API 高得多。这使得 credit 可以快速运行并处理具有长期开发历史的项目。

您可以使用 credit limit 来检查您当前的 API 查询配额。

仓库分析

Markdown 输出

默认情况下,credit 将文本输出到 stdout,可以将其管道传输到 .md 文件,并按您希望的方式显示

> credit repo --token=<token> rust-lang/rustfmt

# Project Report for rustfmt

## Issues

2462 issues found, 2189 of which are now closed (88.9%).

- 1899 (77.1%) of these received a response.
- 1553 (63.1%) have an official response from a repo Owner or organization Member.

Response Times (any):
- Median: 10 hours
- Average: 34 days

Response Times (official):
- Median: 13 hours
- Average: 39 days

## Pull Requests

1821 Pull Requests found, 1650 of which are now merged (90.6%).
168 have been closed without merging (9.2%).

- 1505 (82.6%) of these received a response.
- 1379 (75.7%) have an official response from a repo Owner or organization Member.

Response Times (any):
- Median: 8 hours
- Average: 2 days

Response Times (official):
- Median: 12 hours
- Average: 2 days

Time-to-Merge:
- Median: 17 hours
- Average: 3 days

## Contributors

Top 10 Commentors (Issues and PRs):
1. nrc: 2772
2. topecongiro: 1526
3. marcusklaas: 718
4. calebcartwright: 461
5. scampi: 331
6. kamalmarhubi: 120
7. rchaser53: 103
8. cassiersg: 100
9. gnzlbg: 79
10. otavio: 63

Top 10 Code Contributors (by merged PRs):
1. topecongiro: 513
2. marcusklaas: 125
3. calebcartwright: 74
4. nrc: 72
5. scampi: 64
6. rchaser53: 57
7. davidalber: 34
8. kamalmarhubi: 31
9. ayazhafiz: 28
10. sinkuu: 24

💡 提示: 您可以将多个仓库一次性传递给 repo 命令。结果将被聚合,这可以很好地了解一个组织内的贡献。

JSON 输出

您还可以将原始结果输出为 --json,然后可以将其管道传输到如 jq 或按您希望的方式处理

> credit repo --token=<token> rust-lang/rustfmt --json

大型项目

默认情况下,credit 查询问题时和拉取请求,这种方式既快速又适用于大多数项目。然而,对于非常大的项目,这可能会让 Github API 不高兴。

如果你注意到 credit 在有数千个问题和拉取请求的项目上失败,可以考虑使用 --serial 标志。这将首先拉取问题,然后是拉取请求。使用 --serial 标志,credit 甚至可以在 Rust 编译器 本身上工作!

> credit repo --token=<token> rust-lang/rust --serial

开发者排名

credit users 可以用来确定一个国家中最有生产力的开源程序员的大致名单。这报告的数字与“贡献日历”上看到的类似,尽管已经减去了对私人仓库的贡献。

> credit users --token=<token> --location=Switzerland

💡 注意:由于查询 Github 的方式,数据提取可能需要几分钟才能完成。

# Top 100 Open Source Contributors in Switzerland

There are currently 18518 Github users in Switzerland.

  1. oleg-nenashev (7331 contributions)
  2. cclauss (6378 contributions)
  3. dpryan79 (5604 contributions)
  4. peterpeterparker (4869 contributions)
  5. ReneNyffenegger (4722 contributions)
  6. eregon (4415 contributions)
  7. jeremytammik (3864 contributions)
  8. liufengyun (3787 contributions)
  9. swissspidy (3775 contributions)
 10. pvizeli (3706 contributions)
... and so on

repo 一样,可以使用 --json 标志输出 JSON 数据。

配置

可以在你的 XDG_CONFIG_HOME 指定配置文件,默认情况下是 $HOME/.config/credit.toml

# Your Github Access Token. With this set, you need not pass `--token` on the command line.
token = "abc123"

常见问题解答

这个有多准确?

credit 给出的数字并不是开发者生产力和维护者响应速度的完美衡量标准。请本着良好的信念使用其结果。

响应时间:尤其是在开源世界中,志愿者开发者没有义务在我们用户方便的时间框架内响应。

合并的 PR:在没有人类眼睛来判断代码贡献的情况下,其重要性可能很难衡量。有些 PR 很长,但贡献很小。有些 PR 只是一个提交,但可以拯救公司。《credit》采取的立场是,随着时间的推移,在足够大的样本量下,关于“谁在工作”的一般趋势将出现。对于单打独斗的项目或那些长期以来直接向 master 推送而不使用 PR 的项目,可能会出现奇怪的结果。

用户排名:“顶级开发者”究竟是什么?由于可以人为地夸大贡献数量,credit 使用以下假设来过滤掉虚假的积极结果

具有高贡献数量和相对较高关注者数量的用户一定在做一些有价值的事情。

因此,最初只考虑了前 1000 位最受关注的开发者。之后,应用其他指标,以得出公平的顶级 100 名名单。

我能否看到提交次数?

是的!将 --commits 传递给 repo 命令。请注意,这需要从 Github 获取更多数据,因此需要更长的时间才能完成。

为什么中位数和中位数值不同?

由于数据集中存在异常值,有时考虑中位数而不是平均值可能更准确。

在维护者响应时间的情况下,考虑一个通常在 10 分钟内对所有新问题做出响应的开发者。然后他休假去了,直到两周后回来,错过了几个问题。在这种情况下,他的平均值会被扭曲,但中位数将保持准确。

credit 不会尝试去除异常值,但将来可能会这样做。

依赖项

~14–24MB
~375K SLoC