Works by

Ren's blog

@rennnosuke_rk 技術ブログです

golang/go issuesの対象傾向を見る

golang/goのissues傾向を調べるため、パッケージなどprefixごとにどのくらいのissueが作られているのかを簡単&ざっくりですが調べてみました。

# Github API(v3) から愚直にpagingしつつissueを取得します
# credentialなしでも叩けますが、rate limitが緩和されるので付与(credentialなしで60/h,ありで5000/h)
$ for i in {1..600}; do curl -XGET "https://api.github.com/repos/golang/go/issues?page=$i&per_page=100&state=all" \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: token xxx..." \
| jq ".[].title" >> ~/golang_go_issues_20220619_all.txt; done

$ cat golang_go_issues_20220619_all.txt| wc -l
   52904

# issue template で指定されている `affected/package: title` のタイトルフォーマットを前提にparse(一部従っていないissueもある)・上位20件を表示
$ cat ~/golang_go_issues_20220619_all.txt | sed 's/"//g' | awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n 20
3833 cmd/go
3047 cmd/compile
3000 runtime
2541 proposal
1638 net/http
1500 x/tools/gopls
1076 net
 887 x/pkgsite
 592 cmd/link
 578 x/build
 521 doc
 500 cmd/cgo
 484 os
 470 time
 468 spec
 459 cmd/gc
 427 encoding/json
 419 x/mobile
 414 gccgo
 404 x/website

コマンド・処理系関連とproposalが圧倒的に多いですね。 次いでnet/http net が多いのもGoらしく、webを意識した言語らしさを感じます。 (特に net/http だけでも多く、goplsやdocなど周辺ツールよりも多い)

issueが多く作られているパッケージは(バグを多く含んでいたとか、改善点が多いという可能性もありますが)皆が多くの関心を寄せているパッケージという見方もできるので、 Go標準パッケージを読むときの優先順位順位付けなどに使ったりできそうだなと思いました。