且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

利用GitHub大数据查询接口统计分析最流行的代码规范

更新时间:2022-09-10 09:28:53

我们翻译了最流行的代码规范系列文章,涵盖了以下主流编程语言:

这些代码规范是sideeffect.kr通过分析GitHub上托管的开源代码得出的。sideeffect.kr将用于统计分析的代码开源了。

利用GitHub大数据查询接口统计分析最流行的代码规范

安装

npm install

bower install

然后将github token保存为github.json文件,置于.tokens目录下。


依赖

popularconvention基于以下技术构建:

  • Node.js
  • CoffeeScript
  • MongoDB


GitHub公共数据

GitHub上每天都会有大量的活动,包括报告bug、推送代码、发起合并请求,等等。sideeffect.kr就是通过查询GitHub的公共数据统计分析流行的代码规范的。

GitHub以Google BigQuery的形式提供公共数据的查询接口。你可以使用Google BigQuery语句来查询这些数据,例如,以下代码会找出推送数最多的100个Ruby仓库:

SELECT repository_name, count(repository_name) as pushes, repository_description, repository_url

FROM [githubarchive:github.timeline]

WHERE type="PushEvent"

    AND repository_language="Ruby"

    AND PARSE_UTC_USEC(created_at) >= PARSE_UTC_USEC('2012-04-01 00:00:00')

GROUP BY repository_name, repository_description, repository_url

ORDER BY pushes DESC

LIMIT 100

利用Google BigQuery,弹指之间查询GitHub的整个数据集。如果你不需要实时查询,那么你也可以使用GitHub Archive提供的按小时打包的数据。(自2011-02-12起)例如:

  1. April 11, 2012, 3PM UTC

wget http://data.githubarchive.org/2012-04-11-15.json.gz

  1. April 11, 2012

wget http://data.githubarchive.org/2012-04-11-{0..23}.json.gz

  1. April 2012

wget http://data.githubarchive.org/2012-04-{01..31}-{0..23}.json.gz

数据格式为JSON,你可以用你惯用的语言来处理。下面是一个Ruby的例子:

require 'open-uri'

require 'zlib'

require 'yajl'

gz = open('http://data.githubarchive.org/2012-03-11-12.json.gz')

js = Zlib::GzipReader.new(gz).read

Yajl::Parser.parse(js) do |event|

  print event

end